我的情况是我的(嵌入式)Web服务器正在发送Expires标头,但浏览器似乎不尊重标头设置,即,如果我刷新页面,浏览器会请求应该缓存的资源.以下是要交换的标头:
https://192.168.1.180/scgi-bin/ajax/ajax.cgi GET /scgi-bin/ajax/ajax.cgi HTTP/1.1 Host: 192.168.1.180 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Cache-Control: max-age=0 HTTP/1.x 200 OK Date: Wed, 24 Jun 2009 20:26:47 GMT Server: Embedded HTTP Server. Connection: close Content-Type: text/html ---------------------------------------------------------- https://192.168.1.180/scgi-bin/ajax/static.cgi?fn=images/logo.jpg&ts=20090624201057 GET /scgi-bin/ajax/static.cgi?fn=images/logo.jpg&ts=20090624201057 HTTP/1.1 Host: 192.168.1.180 User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11 (.NET CLR 3.5.30729) Accept: image/png,image/*;q=0.8,*/*;q=0.5 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: https://192.168.1.180/scgi-bin/ajax/ajax.cgi Cache-Control: max-age=0 HTTP/1.x 200 OK Date: Wed, 24 Jun 2009 20:26:47 GMT Server: Embedded HTTP Server. Connection: close Expires: Wed, 1 Jun 2011 20:00:00 GMT Content-Type: image/jpg ----------------------------------------------------------
ajax.cgi返回一个带有徽标图形的html页面(通过static.cgi脚本),我想缓存它,但浏览器要求每次刷新都有徽标.
Htt*_*ort 16
如果刷新页面,浏览器将忽略Expires标头.它始终通过联系Web服务器来检查缓存条目是否仍然有效.理想情况下,它将使用If-Modified-Since请求标头,以便服务器可以返回"304 Not modified"(如果缓存条目仍然有效).
您没有设置Last-Modified标头,因此浏览器必须对内容执行无条件的GET以确保它是最新的.
本博文中描述了设置Expires和Last-Modified的一些经验法则:
http://blog.httpwatch.com/2007/12/10/two-simple-rules-for-http-caching/
chr*_*166 13
你在浏览器里做什么?我看起来像你点击重新加载按钮甚至像shift + Reload.通常,浏览器不会发送Cache-Control: max-age=0标头.这意味着浏览器已经丢弃了缓存的图像并希望再次获取它.
如果您只是导航到另一个页面然后再返回,则浏览器应该尊重您的Expires标头.
此外,您可以Cache-control: public为响应添加标头.这允许代理和浏览器显式地缓存图像.
| 归档时间: |
|
| 查看次数: |
18885 次 |
| 最近记录: |