You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何为指定图片设置Cache-Control缓存控制头

解决方法

首先按顺序排查以下配置:

  • 确认Apache已启用mod_headers模块:可通过phpinfo()查看已加载模块列表,找到mod_headers即为开启;未开启的话需要在Apache配置文件中取消LoadModule headers_module modules/mod_headers.so行的注释,重启Apache生效。
  • 确认站点目录的AllowOverride配置已开启:打开Apache的站点配置文件(通常是httpd.conf或虚拟主机对应的.conf文件),找到站点对应的<Directory>配置段,确认参数为AllowOverride All,如果为AllowOverride None,.htaccess文件会完全不生效,修改后需重启Apache。
  • 确认.htaccess文件放在静态资源所在的目录:Laravel项目默认静态资源都存放在public目录下,需要把配置规则写在public目录的.htaccess文件中,如果放在项目根目录会无法匹配到资源。

上述配置确认无误后,调整.htaccess规则写法,用Header always set代替Header set,避免部分响应场景下规则不生效:

<Files "background.png">
    Header always set Cache-Control "max-age=300, private"
</Files>

如果还是不生效,可改用路径匹配的写法精准命中资源:

<IfModule mod_headers.c>
    <FilesMatch "img/background\.png$">
        Header always set Cache-Control "max-age=300, private"
    </FilesMatch>
</IfModule>

测试前请先清除浏览器本地缓存,修改.htaccess不需要重启Apache,直接通过浏览器开发者工具的网络面板查看资源的响应头即可。

内容的提问来源于stack exchange,提问作者BenA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 17:48:03