使用 mod_headers mod_expires 进行 Apache 缓存

使用 mod_headers mod_expires 进行 Apache 缓存

我正在做大学作业,希望有人能帮我澄清一些事情。我需要设置以下内容:

  • 配置响应头“Cache-Control”,使所有图片文件的“max-age”值为自访问以来 7 天
  • 配置响应头“Cache-Control”,使所有静态 HTML 文件的“max-age”值为自修改以来 5 天。
  • 将响应头“Cache-Control”配置为所有静态 HTML 和图像文件的值为“public”。
  • 将响应头“Cache-Control”配置为所有 PHP 文件的值为“private”。

我的问题是,使用 FilesMatch 还是 mod_expires ExpiresByType 来实现这一点更好?到目前为止,我使用了以下方法:

<FilesMatch "\.(gif|jpe?g|png)$">
    ExpiresDefault "access plus 7 days"
    Header set Cache-Control "public"
</FilesMatch>

<FilesMatch "\.(html)$">
    ExpiresDefault "modification plus 5 days"
    Header set Cache-Control "public"
</FilesMatch>

<FilesMatch "\.(php)$">
    Header set Cache-Control "private"
</FilesMatch>

谢谢。

答案1

您需要使用

到期日期

指令,无论你想在哪里应用Expires标题,例如

<Location / >    
   ExpiresActive On
   ExpiresByType image/png "access plus 7 days"    
   ExpiresByType image/jpg "access plus 7 days"    
   ExpiresByType image/gif "access plus 7 days"

   ExpiresByType text/html "modification plus 5 days"

   <FilesMatch "\.(gif|jpe?g|png)$">        
      Header set Cache-Control "public"    
   </FilesMatch>

   <FilesMatch "\.(html)$">        
      Header set Cache-Control "public"    
   </FilesMatch>

   <FilesMatch "\.(php)$">
      Header set Cache-Control "private"    
   </FilesMatch> 
</Location>

答案2

我知道这是一个老问题但以防万一有人偶然发现它......

使用 FilesMatch 和 ExpiresByType 指令是有区别的。

FilesMatch 根据文件的扩展名来匹配文件。

ExpiresByType 根据文件的 mime 类型进行匹配。

一般情况下最好使用ExpiresByType。

来源http://www.websiteoptimization.com/secrets/advanced/caching-example.html

答案3

我将在全局范围内使用 ExpiresByType,而不是在上下文(FilesMatch)中使用 ExpiresDefault。

您是否测试过您的配置?

相关内容