Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 跨整个解决方案的HTTP响应头(缓存清除)_C#_Html_Css_Asp.net_Caching - Fatal编程技术网

C# 跨整个解决方案的HTTP响应头(缓存清除)

C# 跨整个解决方案的HTTP响应头(缓存清除),c#,html,css,asp.net,caching,C#,Html,Css,Asp.net,Caching,我有一个包含大量aspx页面的解决方案。我们还工作在一个CSS/js文件相对定期更改的环境中(远比我和我的开发团队更愿意更改的频率高)。当我们进行这些CSS/js更改时,这给我们的用户带来了一个问题,因为我们的用户最终会遇到缓存冲突。我们通常会指示他们清除缓存,这样可以解决所有问题,但我们也不必告诉他们清除缓存 因此,为了让用户清除缓存,我使用了我在这里看到的一篇文章中的HTML响应头: Response.AppendHeader("Cache-Control", "no-cache, no-s

我有一个包含大量aspx页面的解决方案。我们还工作在一个CSS/js文件相对定期更改的环境中(远比我和我的开发团队更愿意更改的频率高)。当我们进行这些CSS/js更改时,这给我们的用户带来了一个问题,因为我们的用户最终会遇到缓存冲突。我们通常会指示他们清除缓存,这样可以解决所有问题,但我们也不必告诉他们清除缓存

因此,为了让用户清除缓存,我使用了我在这里看到的一篇文章中的HTML响应头:

Response.AppendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
Response.AppendHeader("Pragma", "no-cache"); // HTTP 1.0.
Response.AppendHeader("Expires", "0"); // Proxies.
这似乎工作正常。我还考虑在js文件上使用querystring参数来强制刷新:

<script src="../js/jquery-1.4.2.min.js?v=1" type="text/javascript"></script>

这可能有助于解决js/css缓存问题,但我不认为这是缓存的唯一页面内容(从而在主要版本中抛出错误)

一旦我确信使用HTML响应头已经实现了它的目标,我计划也应用到期


所以问题是:我是否必须将这个(作为响应头)添加到解决方案中的每个aspx中?我是否可以将其加载到父帧中,并让子iFrame“继承”缓存清除?如果不是这样,我是否可以将其放入母版页,并让内容页从母版页接收这些标题?任何洞察都会很棒。

如果您使用的是母版页,那么在母版页中设置标题就足够了

更广泛地说,以下是我们如何处理这种情况:

  • 我们使用巡航控制生成包含发布的文本文件 每次构建的id(如“2014-05-13.001”)
  • 在.net中,我们使用StreamReader获取当前的buildId并存储 它位于应用程序对象中
  • 我们将id作为querystring参数附加到所有CSS和JS文件引用中

  • 这样,每当我们发布一个版本时,所有CSS和JS文件都会被清除并重新加载。缺点是所有的文件都被清除了,不仅仅是那些被修改过的文件,但是我们没有发布太多的公开版本,而且比其他版本要好。

    我正在用“c#function”受保护的字符串getRandomStr(){Random r=new Random();int rando=r.Next()实现js/css思想;return rando.ToString();}'据我所知,这在母版页中有效。我更关心单个aspx页面。我刚刚了解到大师没有Page#u PreInit,所以这对c#端来说是个障碍。我将从JS/CSS版本的实现开始,并从那里开始。随机数方法的缺点是,文件永远不会被缓存,这不太理想,会降低每个页面的加载速度。