避免重新下载php发送的图像

时间:2014-03-15 11:35:05

标签: php http http-headers etag http-status-code-304

我有一个网站,上面有一些从php脚本发送的图片。 每次发送ETag并检查下一个请求。这很好。在第一页打开时,所有文件都下载200 Ok,下一页下载304 Not Modified。

但是我注意到,如果我重新打开页面但是在重新加载(F5)时,直接从http服务器发送的某些文件没有检查过修改过的事件。

If I open the page for the first time:
Files from web server: 200 Ok
Files from php script: 200 Ok

If I press F5:
Files from web server: 304 Not Modified
Files from php script: 304 Not Modified

If I reopen the page:
Files from web server: NO REQUEST
Files from php script: 304 Not Modified

我想要做的是让浏览器跳过检查我的文件是否被修改并显示缓存版本。 所以我检查了http和php脚本发送到浏览器的响应:

来自http服务器的静态内容:

Accept-Ranges        bytes
Connection           keep-alive
Content-Length       22033
Content-Type         image/png
Date                 Sat, 15 Mar 2014 10:42:06 GMT
Etag                 "523c1617-5611"
Last-Modified        Fri, 20 Sep 2013 09:32:07 GMT
Server               nginx

由php脚本提供的内容:

Connection          keep-alive
Content-Type        image/jpeg
Date                Sat, 15 Mar 2014 10:45:16 GMT
Etag                c4ca4238a0b923820dcc509a6f75849b
Server              nginx
Transfer-Encoding   chunked

所以差异是:

Accept-Ranges, Content-Length, Last-Modified, Transfer-Encoding

但我认为唯一可以让浏览器不检查更新的是Last-Modified。因此,如果我将Last-Modified添加到我的php脚本中 - 浏览器会跳过检查更新吗?

1 个答案:

答案 0 :(得分:0)

好的,找到了答案。

Last-Modified:使用firefox使图像加载像随机一样。

Cache-Control: max-age=...完全停止检查图像是否已被修改