图像的缓存标头始终为“无缓存”和“过期:-1”

Posted

技术标签:

【中文标题】图像的缓存标头始终为“无缓存”和“过期:-1”【英文标题】:Caching-Headers for Images are always "no-cache" and "expires: -1" 【发布时间】:2015-01-14 08:29:03 【问题描述】:

我正在运行基于 Piranha CMS 的页面,将其用作被动模式下的内容源。 在优化页面速度时,我看到 piranha 处理的所有图像请求都返回以下响应标头:

GET /media/4b3b3fa3-ff7b-4af7-81f2-168474edd23f/50/20

Cache-Control:no-cache
Content-Length:52826
Content-Type:image/jpeg
Date:Mon, 17 Nov 2014 11:53:28 GMT
Expires:-1
Pragma:no-cache
X-UA-Compatible:IE=Edge,chrome=1

当然,我希望尽可能缓存这些图像。 看了下github上的代码,发现这个信息好像是在/Piranha/Web/ClientCache.cs中设置的。

有没有办法影响食人鱼设置的缓存头?

【问题讨论】:

【参考方案1】:

配置部分在当前版本中不是很清楚,但缓存由两个参数控制,您可以在管理器界面中从System > Parameters 设置它们。这里有两个参数CACHE_PUBLIC_EXPIRESCACHE_PUBLIC_MAXAGE,它们指定客户端浏览器缓存的时间(以分钟为单位)。

这些默认设置为 0,因为您不希望在开发期间启用缓存,这会禁用缓存并呈现 no-cache 标头。当您激活缓存 E-tag 时,将为您的媒体文件生成 Last modified 和 Expires 标头。

最好的问候

哈坎

【讨论】:

不敢相信我没想到要看看参数...非常感谢。

以上是关于图像的缓存标头始终为“无缓存”和“过期:-1”的主要内容,如果未能解决你的问题,请参考以下文章

获取缓存响应 - 无缓存标头未按预期工作

如何通过注释在spring mvc 3中设置标头无缓存

为啥 Chrome 会使用 max-age 标头请求已缓存的图像?

缓存跨域资产时,Chrome 应用程序缓存不发送“Origin”标头

如何使用 Spring Security 注入默认安全标头

用户如何在浏览器请求上设置无缓存?