请求标头与响应标头

时间:2016-01-28 16:02:56

标签: apache caching http-headers request-headers response-headers

我正在尝试将图像缓存在网站上。图像由PHP提供,我在其中设置具有适当值的缓存控制的响应头,但是这不是缓存图像,我认为它可能与具有缓存控制无缓存的请求头有关?标题如下:

响应标头

Access-Control-Allow-Origin:*
Cache-Control:max-age=290304000, public
Connection:close
Content-Encoding:gzip
Content-Length:5166
Content-Type:image/jpeg
Date:Thu, 28 Jan 2016 15:50:56 GMT
Etag:f31a1f9f6699e0660c6b0b8e2c133add
Expires:Sat, 27 Feb 2016 15:50:56 GMT
Last-Modified:Thu, 26 Nov 2015 11:40:11 GMT
Server:Apache/2.2.15 (Red Hat)
Vary:Accept-Encoding
X-Powered-By:PHP/5.6.17

请求标题

Accept:image/webp,image/*,*/*;q=0.8
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Authorization:Basic dGs6dGs=
Cache-Control:no-cache
Connection:keep-alive
Cookie:_dc_gtm_UA-60001243-5=1; _gat_UA-60001243-5=1; laravel_session=eyJpdiI6IkdcL0VYYUxMNEU0Q1wvM1VvQlpOU3NDZz09IiwidmFsdWUiOiJWaGVDaVJqdGdMaWlOaDBzUTI5Tzd3TmE1SU9UR2VcL29ZallVSWR6TUtaVTMyclM1aWpmM0F6Tk94eFBCZjZzamQ1U05RdlR0WTNUZzdFMEFLMkZYVFE9PSIsIm1hYyI6Ijg3MjY1ZDM3MDI1ZTRmYTI0ODY3NWYxNDEyM2RkMGRhMWFlY2E3NDFjOGEwMTQ1NzZiMWZmODFkNzZjNzRhYWQifQ%3D%3D; _ga=GA1.4.5501114.1453888035
Host:*****.com
Pragma:no-cache
Host:*****.com
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36

如何让这些图像缓存?

1 个答案:

答案 0 :(得分:1)

由于Cache-Control: no-cache 请求标头,您对缓存缺失的想法是正确的;该请求标头告诉任何可能的缓存,一直到使用所请求资源的任何缓存数据(请参阅"端到端重新加载" RFC 2616部分)。

具体而言,您的回复可能实际上正在被缓存。但请求中的Cache-Control: no-cache标头表示该特定HTTP客户端不希望利用缓存;另一个HTTP客户端可能能够使用缓存的资源。

对于像那样的情况,某些HTTP客户端拒绝使用任何缓存,我已经看到例如。 haproxy用于过滤/重写Cache-Control请求标头;我怀疑Apache可以用来做同样的事情。理论上,这样重写客户端后面的请求标题可以说是不是一个好主意。但是,如果您确实需要使用缓存(如果可用),则可能是权宜之计。

希望这有帮助!