如何强制浏览器在刷新时不重新请求资源?

时间:2010-12-21 23:07:41

标签: php caching http-caching

我正试图强制浏览器缓存不同的资源,如CSS,图片,js等永远。重要的是浏览器永远不要尝试刷新images / css,因为在页面上可能存在数千个小图像,并且当浏览器尝试刷新它时会轰击服务器,并且不必要地使页面保持刷新模式。 images / css永远不会改变请求路径的变化。

现在我将images / css的路径设置为脚本,其中包含以下网址:

"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");

但是,如果点击“刷新”按钮,则Chrome和Firefox都会重新请求image / css。如果您点击地址栏上的Enter键,Chrome似乎也会发送请求,与Firefox不同。

我的问题是为什么他们这样做,因为Expires标题应该使它在2037年之前不再执行请求,即使用户按下Refresh。我做错了什么,或者错过了什么?

1 个答案:

答案 0 :(得分:4)

你做不到。正如您所注意到的,某些浏览器将“刷新”定义为“刷新并刷新缓存”。

服务器只能为缓存上的Web浏览器提供指导,但不能强制执行。