具有查询字符串的URL的缓存

7
我正在开发的Web应用程序提供像/image?name=a.gif这样的URL来传递图像。页面加载缓慢,部分原因是浏览器没有缓存这些图像。
是否有任何组合的HTTP头可以说服IE缓存这些图像,即使URL中有查询字符串?我试图避免浏览器发出任何不必要的请求(包括if-modified-since类型的请求)。
我满意只在IE(6+)上运行的解决方案。此外,我知道可以通过URL重写来避免此问题 - 我只是对了解浏览器缓存更感兴趣。
谢谢。
2个回答

9

常见的误解是,很多老旧的浏览器(包括IE6)和一些旧版本的缓存(如Squid)无论过期日期如何,都不会缓存任何带查询字符串的文件。

相对于使用查询字符串版本控制,更为健壮的替代方案是将版本信息放入路径中,例如:

site/static/23212903/css/bundle.css

或者:

site/images/logo.r23212903.png

更多信息,请参阅Sergey Chernyshev关于正确设置缓存头的优秀文章


4

在您的Web服务器中设置过期标头,将其设置为较远的日期。


4
就此而言,“Cache-Control: max-age=#”是Expires的更新且更时髦的版本,但两者都可以使用。请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9。 - David Z

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接