2

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 不能被缓存,但我想听听其他人在做什么来解决这个问题。您如何获得最佳缓存与重新加载优势。

谢谢。

4

2 回答 2

1

你的分析是正确的。Web 性能最佳实践建议静态组件(即那些不经常更改的组件)在很远的将来到期,并且在 URL 中使用版本号可以很好地管理这些更改。

对于主页 (main.html),您不会设置一个遥远的未来到期日期。相反,您不能设置过期时间,或将其设置为最短时间,例如 +24 小时。

于 2011-12-28T03:34:48.763 回答
0

猜猜这取决于您为什么要缓存 HTML 页面 - 以改善用户加载时间或减少服务器负载。

即使过期时间很长,您可能会发现它实际上并没有在客户端缓存很长时间(雅虎研究表明文件不会在缓存中保存很长时间),因此较短的过期时间(例如 1 天)可能不会一个问题。

如果是为了减少后端负载,可能值得看看像 Varnish 这样的代理是否会有所帮助,即它会缓存来自原始服务器的页面,以便在请求时为它们提供服务。通过这种方式,您可以通过更精细的控制来控制页面缓存的时间长度。

于 2012-01-04T09:50:37.127 回答