【发布时间】:2012-01-28 17:29:48
【问题描述】:
YSLOW 建议:对于静态组件:通过设置远期 Expires 标头来实施“永不过期”策略....如果您使用远期 Expires 标头,则必须在组件更改时更改组件的文件名。在雅虎!我们经常将此步骤作为构建过程的一部分:版本号嵌入在组件的文件名中,例如 yahoo_2.0.6.js。 http://developer.yahoo.com/performance/rules.html
我想为我的大部分静态页面利用缓存,并在版本 # 更改时重新加载 js 文件。我为我的 .js 文件设置了版本号,但我的 main.html 页面将 Expires 设置为未来,因此它不会重新加载,因此不会重新加载 js 文件。理想情况下,我想告诉浏览器(使用通灵技术)在发布新版本的站点时重新加载 main.html。我可以让我的 main.html 页面总是重新加载,但是我失去了缓存的好处。我不是在寻找 ctrl-F5 答案,因为这需要为我们的用户自动发生。
我认为答案是:main.html 不能被缓存,但我想听听其他人正在做什么来解决这个问题。您如何获得最佳的缓存与重新加载优势。
谢谢。
【问题讨论】:
-
我认为你是对的 - main.html 无法缓存。或者至少不是整个页面。
-
确保您的服务器支持 304 Not Modified,因此如果页面未更改,至少无需重新下载任何内容。如果你想要更多,你可以查看 html5 的 appcache。这就是你想要的技巧,但如果 appcache 发生了变化,你需要一些 JS 来“重新加载”页面。否则页面将在下次请求页面时更新。我刚才说的可能对你没有多大意义。
标签: html yslow pagespeed http-caching expires-header