去掉HTTP 响应头中的 Cache-Control 及 Pragma引起的CDN缓存问题

在使用 CDN 进行缓存优化时,您可能会遇到一个令人头疼的问题:源站的 HTTP 响应头包含一些禁止缓存的指令,例如 Cache-Control: no-store,no-cache,must-revalidate,post-check=0,pre-check=0 和 Pragma: no-cache。这些头部信息会导致 CDN 无法对内容进行缓存,从而严重影响缓存命中率。

文章源自堕落的鱼-https://www.duoluodeyu.com/2762.html

如果源站返回了带有禁止缓存的 HTTP 响应头,CDN 可能会继承这些头部信息,从而导致内容无法被缓存。例如使用军哥的 LNMP环境,在动态页面或伪静态页面中,HTTP 响应头通常包含如下信息:文章源自堕落的鱼-https://www.duoluodeyu.com/2762.html

Cache-Control: no-store,no-cache,must-revalidate,post-check=0,pre-check=0
Pragma: no-cache

这些头部信息默认是为了防止动态内容被缓存,但在启用 CDN 的情况下,这些指令会直接干扰 CDN 的缓存策略。文章源自堕落的鱼-https://www.duoluodeyu.com/2762.html

解决这个问题的核心在于去掉 HTTP 响应头中的 Cache-Control 和 Pragma,而无需修改网站程序的代码。通过调整 PHP 配置即可轻松解决。大多数情况下,这些头部信息是由 PHP 会话(Session)管理机制生成的,特别是与 session.cache_limiter 参数有关。解决方法如下:文章源自堕落的鱼-https://www.duoluodeyu.com/2762.html

1.修改 PHP 配置文件(php.ini)文章源自堕落的鱼-https://www.duoluodeyu.com/2762.html

打开 PHP 的配置文件 php.ini,找到以下配置:文章源自堕落的鱼-https://www.duoluodeyu.com/2762.html

session.cache_limiter = nocache

将其值改为 none:文章源自堕落的鱼-https://www.duoluodeyu.com/2762.html

session.cache_limiter = none

2.重启 PHP 服务文章源自堕落的鱼-https://www.duoluodeyu.com/2762.html

修改完成后,需要重启 PHP 服务以使配置生效。具体命令如下:文章源自堕落的鱼-https://www.duoluodeyu.com/2762.html

systemctl restart php-fpm

或者:文章源自堕落的鱼-https://www.duoluodeyu.com/2762.html

service php-fpm restart

如果你使用的LNMP环境,也可以使用:

lnmp php-fpm restart
 
匿名

发表评论

匿名网友
:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:
确定

拖动滑块以完成验证