如何为缓存的html文件触发浏览器html刷新?

时间:2011-12-27 19:34:00

标签: html yslow pagespeed http-caching expires-header

YSLOW建议:对于静态组件:通过设置远期的Expires头来实现“永不过期”策略....如果使用远期的Expires头,则必须在组件更改时更改组件的文件名。在Yahoo!我们经常将此步骤作为构建过程的一部分:版本号嵌入在组件的文件名中,例如,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无法缓存,但我想听听其他人正在做些什么来解决这个问题。你是如何获得最好的缓存和重新加载的好处。

感谢。

2 个答案:

答案 0 :(得分:1)

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

对于主页面(main.html),您不会设置远期的到期日期。相反,您无法设置到期时间,或将其设置为最短时间,例如+24小时。

答案 1 :(得分:0)

猜测这取决于你想要缓存HTML页面的原因 - 改善用户加载时间或减少服务器负载。

即使有很长的到期时间,您可能会发现它实际上并未在客户端缓存很长时间(Yahoo研究显示文件长时间不在缓存中),因此缩短了到期时间,例如1天,可能不是问题。

如果要减少后端负载,可能值得查看像Varnish这样的代理是否会有所帮助,即它是否会从原始服务器缓存页面,并在请求时为其提供服务。这样,您可以通过更精细的控制级别来控制页面的缓存时间。