强制浏览器只有在更改后才能重新加载css / js

关于我的问题有很多问题和答案[我希望浏览器永远缓存js / css。 在新版本中,如果某些js / css文件已更新,浏览器应重新加载并缓存它们。]

这个解决方案似乎最适合我:什么是强制浏览器重新加载缓存的CSS / JS文件的优雅方式?

但是,我无法弄清楚一件事。 该解决方案利用last_modified_time。 但是,我不能使用它。 我需要使用其他一些机制。

有什么选择? 是否有可能通过构建脚本在构建和更新(替换)jsps期间预先计算版本(部署之前,以便在运行时不计算版本号)? 任何现有的工具为此目的? 我使用Java / Jsp。


我们总是使用

file.css?[deploytimestamp]

这样CSS客户端上的每个部署都会缓存CSS文件。 我们缩小的javascript也是一样。 这是你的选择吗?


这可能不是最好的方式,但这是我现在所做的:

  • 我所有的js / css都有一个[source control = svn]修订号
  • 我的jsp中的引用是/ foo / path1 / path2 / xyz000000 / foo。
  • 构建步骤1 - 生成css | js文件及其修订版本号的地图
  • 构建第2步 - 用svn修订版的散列替换jsps中的xyz000000引用
  • url重写器中的一个规则,用于指导all / foo / path1 / path2 / xyz </ 676778> / foo。 到/foo/path1/path2/foo.[js|css]
  • 无限缓存css | js文件
  • 无论何时提交,修订号都会更改,而且.jsp中的引用也会更改

  • 部署后生成每个css文件的md5哈希。 使用这个散列而不是css的url中的时间戳。

    file.css?[hash of file.css contents]
    

    在部署后计算哈希值并将其存储以获得某些性能可能是明智的。 您可以将它们存储在数据库中,甚至可以将它们存储在网站代码中包含的单独文件中的PHP数组中。

    链接地址: http://www.djcxy.com/p/55771.html

    上一篇: Forcing the browser to reload css/js only if they have changed

    下一篇: How can I force a hard refresh (ctrl+F5)?