1

我在浏览器缓存 javascript 文件时遇到问题,即使我使用

FileETag MTime Size

在htaccess中查看修改时间和大小,看是否为最新版本。我目前包括这样的javascript文件:

<script src="/code.js" type="text/javascript"></script>

我尝试将 SVN 修订信息添加到文件调用中,如下所示:

<script src="/code.js?svn=123" type="text/javascript"></script>

但我找不到一个防弹的方法来做到这一点,因为我无法通过文件名获得修订(任何建议),即使我添加了修订,Smarty 正在预编译和缓存 HTML。

所以我考虑过对模板不使用缓存块,但我还没有尝试过这种方法。由于文件只编译一次,会有什么不同吗?

所以基本上我只是在收集关于如何强制浏览器只缓存文件的最新版本的想法。理想的解决方案是通过实际工作的 htaccess,而不是像 FileETag,因为这样,您总是必须按 CTRL+F5 才能获得最新版本。

4

1 回答 1

2

在文件路径中添加缓存破坏器是最好的方法。您可以通过?像这里一样的方法来完成它,或者将它添加到文件的路径中,例如:/static/123/code.js

之后,您在 10 年后添加一个 expires 标头,您就可以开始了。所以你的问题是如何在 url 中生成数字。也许您可以更改部署脚本以在进行部署时替换该数字,这样您就不需要关心版本号

另一个想法是计算 js 文件的 md5 哈希并在路径中使用它。

于 2012-11-12T17:42:52.913 回答