可靠的文件缓存

时间:2013-01-24 04:19:30

标签: javascript css caching

我正在尝试确定缓存JavaScript和CSS文件的最佳方法。

有几种方法可以做到这一点:

  1. 使用DateExpiresCache-Control标题
  2. 使用ETag标题
  3. 永久缓存并在文件更改时更改文件名
  4. 在HTML中使用最后一个mod时间或文件内容的MD5在文件名中附加一个查询字符串
  5. 我的印象是最后一个方法(4)是最可靠的并且会导致最少的不必要的请求,但我的朋友告诉我,有时候查询字符串方法是不可靠的,你实际上需要更改文件名。

    将HTTP标头设置为永久缓存并且仅使用具有最后模式时间的查询字符串是否有任何缺点,或者是否存在其他方法更有益的情况?

2 个答案:

答案 0 :(得分:1)

我是方法4的忠实粉丝,但我使用会话ID。因此,进入我的网站的用户将在每个会话中加载一次(如果访问者保持非活动状态超过20分钟或者如果他关闭浏览器窗口,则会话通常会死亡)。

在Asp.net中,我使用了这种语法:

<script src="js/DetalhesCurso.js?<%=Session.SessionID%>"></script>

答案 1 :(得分:1)

您的第三种方法是最可靠的。 Some CDNs/proxies ignore the query string altogether, and just serve the same cached file regardless of the query string value

AmazonAzure支持它,但其他人可能不支持。

请注意,在方法#3中,实际不必更新文件名本身。您可以使用一些URL重写来始终获取相同的文件。您只需更新HTML。