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

如何通过.htaccess为Yii缓存文件设置过期标头

给Yii 1.1.16缓存文件配置.htaccess过期标头

嘿,针对你在Yii 1.1.16网站上想给缓存文件设置过期标头的需求,我来梳理下具体的.htaccess配置方案——先得明确Yii里两类常见的缓存相关文件位置,再分别配置:

1. 处理Yii文件缓存(CFileCache)的本地缓存文件

默认情况下,Yii的文件缓存(比如页面缓存、数据缓存的本地文件)存在protected/runtime/cache/目录下(如果你的缓存路径有自定义配置,记得对应调整)。这类文件属于临时缓存,没必要设太长的过期时间,以下是配置示例:

把这段代码加到你现有的.htaccess过期配置后面:

# 针对Yii runtime缓存目录的文件
<Directory "/path/to/your/site/protected/runtime/cache">
    <IfModule mod_expires.c>
        ExpiresActive On
        # 这里设为1小时,你可以根据自己的缓存策略调整时长
        ExpiresDefault "access plus 1 hour"
    </IfModule>
    # 加个备选方案,防止mod_expires没启用
    <IfModule mod_headers.c>
        Header set Cache-Control "max-age=3600, public"
    </IfModule>
</Directory>

注意:把/path/to/your/site/替换成你网站的实际根目录路径。如果你的Apache配置限制了.htaccess里用<Directory>指令(比如AllowOverride权限不够),可以换成下面的替代写法:

<IfModule mod_expires.c>
    # 匹配protected/runtime/cache下的所有文件
    <FilesMatch "^protected/runtime/cache/.+$">
        ExpiresActive On
        ExpiresDefault "access plus 1 hour"
    </FilesMatch>
</IfModule>

2. 处理Yii AssetManager发布的静态资源(assets目录)

如果你说的“缓存文件”也包含Yii自动发布到assets/目录的前端资源(比如JS、CSS、图片),这类资源因为有哈希后缀,更新时文件名会自动变化,所以可以设较长的过期时间:

# 针对Yii assets目录的静态资源
<Directory "/path/to/your/site/assets">
    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresByType image/jpg "access plus 1 year"
        ExpiresByType image/jpeg "access plus 1 year"
        ExpiresByType image/gif "access plus 1 year"
        ExpiresByType image/png "access plus 1 year"
        ExpiresByType text/css "access plus 1 month"
        ExpiresByType application/javascript "access plus 1 month"
    </IfModule>
    <IfModule mod_headers.c>
        # 给哈希命名的资源加immutable标记,提升浏览器缓存效率
        Header set Cache-Control "max-age=31536000, public, immutable"
    </IfModule>
</Directory>

几个要注意的点

  • 先确认你的Apache已经启用了mod_expires和mod_headers模块,可以用httpd -M命令(服务器端)或者浏览器开发者工具的Network标签(看响应头有没有Expires/Cache-Control字段)来验证。
  • 如果用的是Yii的内存缓存组件(比如APC、Memcache),这些的过期时间是在Yii的配置文件里设置的,不需要通过.htaccess处理。
  • 配置完后记得测试:打开浏览器开发者工具,访问对应文件,查看响应头里的Expires和Cache-Control是否符合你的设置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:28:00