1

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

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

  1. 使用Date,ExpiresCache-Control标头
  2. 使用ETag标题
  3. 永久缓存并在文件更改时更改文件名
  4. 将查询字符串附加到 HTML 中的文件名以及最后一次修改时间或文件内容的 MD5

我的印象是最后一种方法(4)是最可靠的,并且会导致最少的不必要请求,但我的朋友只是告诉我,有时查询字符串方法不可靠,您实际上需要更改文件名。

将 HTTP 标头设置为永久缓存并仅使用带有最后一次修改时间的查询字符串是否有任何缺点,或者是否存在另一种方法更有益的情况?

4

2 回答 2

1

我是方法 4 的忠实拥护者,但我在上面使用了 Session Id。因此,进入我的网站的用户将在每个会话中加载一次(如果访问者保持非活动状态超过 20 分钟或关闭浏览器窗口,会话通常会终止)。

在 Asp.net 中,我使用该语法:

<script src="js/DetalhesCurso.js?<%=Session.SessionID%>"></script>
于 2013-01-24T04:32:26.267 回答
1

你的第三种方法是最可靠的。一些 CDN/代理完全忽略查询字符串,而不管查询字符串值如何,只提供相同的缓存文件

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

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

于 2013-01-24T04:32:43.007 回答