我正在尝试将图像缓存在网站上。该图像由 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
如何将这些图像缓存起来?
您对由于以下原因而缺乏缓存的想法Cache-Control: no-cache
request标题正确;该请求标头告诉您一路上任何可能的缓存not使用请求资源的任何缓存数据(请参阅“端到端重新加载”部分)RFC 2616 https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.4).
具体来说,您的回复may实际上正在被缓存。但那个Cache-Control: no-cache
标题中的request表示该特定 HTTP 客户端不想利用缓存;另一个 HTTP 客户端也许能够使用缓存的资源。
对于像这样的情况,一些 HTTP 客户端拒绝使用任何缓存,我见过e.g.haproxy 用于过滤/重写Cache-Control
请求头;我怀疑 Apache 也可以用来做同样的事情。理论上来说,在客户端背后重写请求头并不是一个好主意。但如果您确实需要使用可用缓存的此类请求,那么这可能是权宜之计。
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)