Apache2 mod_expires不起作用

时间:2015-10-28 21:33:12

标签: apache .htaccess mod-expires

我最近在支持Apache2的VPS上部署了一个网站,并且正在研究YSlow的性能改进建议。 这些改进包括使用mod_deflate和mod_expires,因为我有root访问权限,所以我可以直接编辑Apache配置文件。

mod_deflate现在正在运行,但我遇到了mod_expires的问题,所以这就是我所做的:

启用expires模块并重启服务器

a2enmod expires
service apache2 restart

创建一个新文件" expires.conf"在mods_enabled下包含以下内容:

<IfModule mod_expires.c>
  # Enable expirations
  ExpiresActive On

  # Default directive
  ExpiresDefault "access plus 1 month"

  # My favicon
  ExpiresByType image/x-icon "access plus 1 year"

  # Images
  ExpiresByType image/gif "access plus 1 month"
  ExpiresByType image/png "access plus 1 month"
  ExpiresByType image/jpg "access plus 1 month"
  ExpiresByType image/jpeg "access plus 1 month"

  # CSS
  ExpiresByType text/css "access plus 1 month"

  # Javascript
  ExpiresByType application/javascript "access plus 1 year"
</IfModule>

但是,当检查网络下的各种浏览器开发工具时,文件显示无控制的缓存控制。

我想在我网站的根目录中的.htaccess中使用我的mod_expires脚本:/ var / www / sitename / public_html,因为.htaccess中的设置会覆盖apache配置文件中的任何先前设置。

为此,我在apache2.conf中启用了htaccess。

我测试了我的htaccess文件确实正在通过自愿引入错误(注释掉IfModule打开标记)。刷新浏览器给了我500服务器错误。所以正在处理htaccess文件。

不幸的是,浏览器开发工具仍然没有显示缓存控制,而且我的想法已经不多了。

我错过了什么吗? 谢谢!

2 个答案:

答案 0 :(得分:0)

最有可能的是,在加载过期模块之前,您的expires.conf正在解析,因为您已将配置文件包含在mods-enabled文件夹中。

将配置文件放在conf.d中,然后重启Apache。

答案 1 :(得分:0)

我终于解决了这个问题:

  • 首先我注意到所有其他配置文件与我在mods-enabled下创建的配置文件之间存在差异:其他配置文件是mods-available下各自文件的符号链接。这不应该是一个问题,但绝对更好地坚持公约。

  • 我似乎没有在创建文件后重新启动apache2服务