Php 如何强制浏览器在刷新时不重新请求资源?
我试图强迫浏览器永远缓存不同的资源,比如CSS、图像、js等等。浏览器绝对不要尝试刷新图像/css,这一点很重要,因为在一个页面上可能有数千个小图像,当浏览器尝试刷新时,它会轰炸服务器,不必要地将页面保持在刷新模式。除非请求路径改变,否则图像/css永远不会改变 现在,我将图像/css的路径设置为一个带有url的脚本,如: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
"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浏览器提供指导,而不能强制执行。我在刷新缓存时按下刷新按钮。如果浏览器不这么做,我会生气的!我在刷新缓存时按下刷新按钮。如果浏览器不这么做,我会生气的!对的手动刷新覆盖服务器指定的缓存指令。正确。手动刷新覆盖服务器指定的缓存指令。