Apache2 mod_expires 不工作
Apache2 mod_expires not working
我最近在 VPS 上部署了一个支持 Apache2 的网站,并且正在研究 YSlow 提出的性能改进建议。
这些改进包括使用 mod_deflate 和 mod_expires,并且由于我有 root 访问权限,我可以直接编辑 Apache 配置文件。
mod_deflate 现在可以工作了,但是我在使用 mod_expires 时遇到了问题,所以这是我所做的:
启用过期模块并重启服务器
a2enmod expires
service apache2 restart
在 mods_enabled 下创建一个新文件 "expires.conf",其中包含以下内容:
<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>
但是,在网络下的各种浏览器 Dev Tools 上检查时,文件显示 None 的缓存控制。
我想在位于我网站根目录的 .htaccess 中使用上面的 mod_expires 脚本:/var/www/sitename/public_html,因为 .htaccess 中的设置会覆盖之前在 apache 中所做的任何设置配置文件。
为此,我在 apache2.conf 中启用了 htaccess。
我测试了我的 htaccess 文件确实有效,方法是故意在其中引入一个错误(注释掉 IfModule 开放标记)。刷新浏览器给了我一个 500 服务器错误。因此正在处理 htaccess 文件。
不幸的是,浏览器开发工具仍然显示没有缓存控制,我运行没主意了。
我错过了什么吗?
谢谢!
很可能,您的 expires.conf
在 加载 expires 模块之前被解析,因为您已将配置文件包含在 mods-enabled
文件夹中。
将您的配置文件放入 conf.d
并重新启动 Apache。
我终于解决了这个问题:
首先,我注意到所有其他配置文件与我在启用 mods 的情况下创建的配置文件之间的差异:其他配置文件是指向其在 mods-available 下各自文件的符号链接。这应该不是问题,但绝对更好地遵守惯例。
看来我可能没有在创建文件后重新启动apache2服务
我最近在 VPS 上部署了一个支持 Apache2 的网站,并且正在研究 YSlow 提出的性能改进建议。 这些改进包括使用 mod_deflate 和 mod_expires,并且由于我有 root 访问权限,我可以直接编辑 Apache 配置文件。
mod_deflate 现在可以工作了,但是我在使用 mod_expires 时遇到了问题,所以这是我所做的:
启用过期模块并重启服务器
a2enmod expires
service apache2 restart
在 mods_enabled 下创建一个新文件 "expires.conf",其中包含以下内容:
<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>
但是,在网络下的各种浏览器 Dev Tools 上检查时,文件显示 None 的缓存控制。
我想在位于我网站根目录的 .htaccess 中使用上面的 mod_expires 脚本:/var/www/sitename/public_html,因为 .htaccess 中的设置会覆盖之前在 apache 中所做的任何设置配置文件。
为此,我在 apache2.conf 中启用了 htaccess。
我测试了我的 htaccess 文件确实有效,方法是故意在其中引入一个错误(注释掉 IfModule 开放标记)。刷新浏览器给了我一个 500 服务器错误。因此正在处理 htaccess 文件。
不幸的是,浏览器开发工具仍然显示没有缓存控制,我运行没主意了。
我错过了什么吗? 谢谢!
很可能,您的 expires.conf
在 加载 expires 模块之前被解析,因为您已将配置文件包含在 mods-enabled
文件夹中。
将您的配置文件放入 conf.d
并重新启动 Apache。
我终于解决了这个问题:
首先,我注意到所有其他配置文件与我在启用 mods 的情况下创建的配置文件之间的差异:其他配置文件是指向其在 mods-available 下各自文件的符号链接。这应该不是问题,但绝对更好地遵守惯例。
看来我可能没有在创建文件后重新启动apache2服务