C# 跨整个解决方案的HTTP响应头(缓存清除)
我有一个包含大量aspx页面的解决方案。我们还工作在一个CSS/js文件相对定期更改的环境中(远比我和我的开发团队更愿意更改的频率高)。当我们进行这些CSS/js更改时,这给我们的用户带来了一个问题,因为我们的用户最终会遇到缓存冲突。我们通常会指示他们清除缓存,这样可以解决所有问题,但我们也不必告诉他们清除缓存 因此,为了让用户清除缓存,我使用了我在这里看到的一篇文章中的HTML响应头: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
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“继承”缓存清除?如果不是这样,我是否可以将其放入母版页,并让内容页从母版页接收这些标题?任何洞察都会很棒。如果您使用的是母版页,那么在母版页中设置标题就足够了 更广泛地说,以下是我们如何处理这种情况:
这样,每当我们发布一个版本时,所有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版本的实现开始,并从那里开始。随机数方法的缺点是,文件永远不会被缓存,这不太理想,会降低每个页面的加载速度。