Joh*_*rry 6 apache .htaccess caching
目前,我的缓存策略如下所示:
<IfModule mod_headers.c>
<FilesMatch "\.(css)$">
Header set Cache-Control "max-age=691200"
</FilesMatch>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
这会将我的 css 文件缓存 8 天。如果我想将特定文件缓存一年,我该怎么做?我看到这个答案,所以我尝试这样做:
<IfModule mod_headers.c>
<FilesMatch "\.(css)$">
Header set Cache-Control "max-age=691200"
</FilesMatch>
<FilesMatch "bootstrap\.(css)$">
Header set Cache-Control "max-age=31536000"
</FilesMatch>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
除此之外,以防万一 apache 在先到先服务的基础上应用规则(<- 可能是该短语的错误使用):
<IfModule mod_headers.c>
<FilesMatch "bootstrap\.(css)$">
Header set Cache-Control "max-age=31536000"
</FilesMatch>
<FilesMatch "\.(css)$">
Header set Cache-Control "max-age=691200"
</FilesMatch>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
但是当我通过页面速度洞察运行页面时,bootstrap.css 文件的缓存策略保持不变。我还清除了自己的缓存,打开了隐身选项卡,并检查了开发工具的网络选项卡内的缓存策略,引导文件的缓存策略仍然是 8 天。
<Files>和<FilesMatch>部分按照它们在配置文件中出现的顺序进行处理,这意味着最后应用的部分将优先,因此您的第一次尝试应该有效:
<IfModule mod_headers.c>
<FilesMatch "\.(css)$">
Header set Cache-Control "max-age=691200"
</FilesMatch>
<FilesMatch "bootstrap\.(css)$">
Header set Cache-Control "max-age=31536000"
</FilesMatch>
</IfModule>
Run Code Online (Sandbox Code Playgroud)
我已经测试过它并且它按预期工作:
$ curl -s -v example.com/bootstrap.css 2>&1 | grep Cache-Control
< Cache-Control: max-age=31536000
Run Code Online (Sandbox Code Playgroud)
$ curl -s -v example.com/foo.css 2>&1 | grep Cache-Control
< Cache-Control: max-age=691200
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2695 次 |
| 最近记录: |