请求头与响应头

5
我正尝试在网站上缓存一张图片。该图片由PHP提供,我设置了一个带有适当值的缓存控制响应头,但是这不会缓存图片。我认为这可能与请求头具有no-cache缓存控制有关。以下是标头:
响应标头
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个回答

1
你对于由于Cache-Control: no-cache请求头导致缺乏缓存的想法是正确的;该请求头告诉可能经过的任何缓存不要使用请求资源的任何缓存数据(请参阅RFC 2616的“端到端重新加载”部分)。
具体来说,你的响应可能实际上正在被缓存。但是,请求中的Cache-Control: no-cache头表示该特定HTTP客户端不想利用缓存;另一个HTTP客户端可以使用缓存的资源。
对于像这样的情况,一些HTTP客户端拒绝使用任何缓存,我见过haproxy用于过滤/重写那个Cache-Control请求头;我认为Apache也可以用于此。理论上,在客户端背后重写请求头并不是一个好主意。但是,如果您确实需要这样的请求在可用时使用缓存,则可能是一种方便的解决方案。
希望这有所帮助!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接