我试图强制浏览器永久缓存 CSS、图像、js 等不同的资源。对于浏览器来说,永远不要尝试刷新图像/css 非常重要,因为在一个页面上可能有数千个小图像,并且当浏览器尝试刷新它时会轰炸服务器,并且不必要地将页面保持在刷新模式。除非请求路径改变,否则图像/css 永远不会改变。
现在,我将图像/css 的路径设置为带有如下 URL 的脚本:
"http://example.com/img/get.php?n=someimage.jpg&v=7"
并且脚本在发送资源之前发送这些标头:
header("Cache-Control: public");
header("Expires: Tue, 19 Jan 2037 00:00:00 GMT");
header("Last-Modified: Sat, 01 Jan 2000 00:00:00 GMT");
但是,如果点击 Refresh 按钮,Chrome 和 Firefox 都会重新请求图像/css。如果您在地址栏上按 Enter,Chrome 似乎也会发送请求,这与 Firefox 不同。
我的问题是他们为什么要这样做,因为 Expires 标头应该使它在 2037 年之前不会再次发出请求,即使用户按下刷新也是如此。我做错了什么,还是错过了什么?