首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用.htaccess对特定文件应用缓存策略?

如何使用.htaccess对特定文件应用缓存策略?
EN

Stack Overflow用户
提问于 2019-02-16 11:27:36
回答 2查看 1.3K关注 0票数 5

目前,我的缓存策略是这样的:

代码语言:javascript
运行
复制
<IfModule mod_headers.c>    
  <FilesMatch "\.(css)$">
   Header set Cache-Control "max-age=691200"
  </FilesMatch>
</IfModule>

这将缓存我的css文件8天。如果我想缓存一个特定的文件一年,我该怎么做呢?I saw this answer,所以我试着这样做:

代码语言:javascript
运行
复制
<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>

除此之外,以防apache在先到先得的基础上应用规则(<-可能是对该短语的错误使用):

代码语言:javascript
运行
复制
<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>

但是,当我通过页面速度洞察来运行页面时,bootstrap.css文件的缓存策略保持不变。我还清除了自己的缓存,打开了一个隐蔽选项卡,并检查了开发工具的网络选项卡中的缓存策略,引导程序文件的缓存策略仍然是8天。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-16 16:29:42

<Files><FilesMatch>部分按照它们在配置文件中出现的顺序进行处理,这意味着最后应用的部分将优先,因此您的第一次尝试应该有效:

代码语言:javascript
运行
复制
<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>

我已经测试过了,它的工作情况和预期的一样:

代码语言:javascript
运行
复制
$ curl -s -v example.com/bootstrap.css 2>&1 | grep Cache-Control
< Cache-Control: max-age=31536000
代码语言:javascript
运行
复制
$ curl -s -v example.com/foo.css 2>&1 | grep Cache-Control
< Cache-Control: max-age=691200
票数 3
EN

Stack Overflow用户

发布于 2019-02-16 12:22:51

有两种方法可以实现这一点。一个是你在这里提到的。实际上,max-age是一个参数,它告诉浏览器在多少秒后它应该过期。所以你可以计算出一年的秒数是"31557600“

另一种简单的方法是实现这一点:

代码语言:javascript
运行
复制
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54719621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档