使静态资源的浏览器缓存无效

时间:2011-11-18 19:42:06

标签: asp.net caching browser-cache web-farm

我正在研究静态资源的缓存。通常,当脚本或样式发生更改时,它会在一段时间内导致人们出现问题,直到他们的浏览器确定是时候使其文件的缓存无效为止。

我希望通过在所有脚本和样式标记的末尾插入一个值来强制浏览器向服务器发送实际请求来解决此问题。此值应在多个服务器之间保持不变,直到发出命令进行更改。如何在多个服务器上生成/更改此值?

1 个答案:

答案 0 :(得分:4)

您可以使用查询字符串或文件名更改来修改静态资源。任何一种方法都应该在客户端上刷新。

<强> 1。查询字符串加速 - 对“style.css”的引用变为“style.css?v = 1.0”

<强> 2。文件名加速 - 对“style.css”的引用变为“style-1.0.css”(还必须在服务器上重命名或创建“style-1.0.css”文件)

我使用了这两种方法,querystring可能更常见,因为您不必重命名服务器上的文件。

然而,这个写作Revving Filenames: don’t use querystring给出了使用文件名加速的合理理由


实现查询字符串加速的一种方法是在web.config应用程序设置中存储版本号

<appSettings>
    <add key="staticResourceVersion" value="1.1"/>
    ...
</appSettings>

然后创建一些实用工具方法(或直接调用ConfigurationManager.AppSettings)以使用内联进行静态资源标记,例如:

<link rel="stylesheet" type="text/css" 
    href="/css/style.css?v=<%=Utilities.GetStaticResourceVersion() %>" />
<script type="text/javascript"
    src="/js/script.js?v=<%=Utilities.GetStaticResourceVersion() %>"></script>
相关问题