Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何强制浏览器在刷新时不重新请求资源?_Php_Caching_Http Caching - Fatal编程技术网

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

Php 如何强制浏览器在刷新时不重新请求资源?,php,caching,http-caching,Php,Caching,Http Caching,我试图强迫浏览器永远缓存不同的资源,比如CSS、图像、js等等。浏览器绝对不要尝试刷新图像/css,这一点很重要,因为在一个页面上可能有数千个小图像,当浏览器尝试刷新时,它会轰炸服务器,不必要地将页面保持在刷新模式。除非请求路径改变,否则图像/css永远不会改变 现在,我将图像/css的路径设置为一个带有url的脚本,如: "http://example.com/img/get.php?n=someimage.jpg&v=7" 脚本将在发送资源之前发送这些头: header("Cach

我试图强迫浏览器永远缓存不同的资源,比如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");
但是,如果按下刷新按钮,Chrome和Firefox都会重新请求图像/css。与Firefox不同,Chrome似乎也会在你点击地址栏上的Enter键时发送请求


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

你不能。正如您所注意到的,一些浏览器采用刷新的定义来表示刷新,并将缓存刷新到


服务器只能在缓存方面为web浏览器提供指导,而不能强制执行。

你不能。正如您所注意到的,一些浏览器采用刷新的定义来表示刷新,并将缓存刷新到


服务器只能在缓存方面为web浏览器提供指导,而不能强制执行。

我在刷新缓存时按下刷新按钮。如果浏览器不这么做,我会生气的!我在刷新缓存时按下刷新按钮。如果浏览器不这么做,我会生气的!对的手动刷新覆盖服务器指定的缓存指令。正确。手动刷新覆盖服务器指定的缓存指令。