在搭建网站或优化服务器性能时,Apache的缓存模块能有效提升页面加载速度,减少服务器负担。尤其在访问量较大的站点中,合理配置缓存可以明显降低后端压力,让访客打开网页更快更流畅。
确认Apache已安装必要模块
Apache默认可能未启用缓存相关模块。需要确认以下两个核心模块是否存在并启用:mod_cache、mod_cache_disk(或mod_cache_socache)。可以通过命令行检查:
apache2ctl -M | grep cache
如果输出中包含cache_module和cache_disk_module,说明模块已编译进Apache。若没有,则需先启用。
启用Apache缓存模块
在大多数Linux系统中,Apache使用a2enmod命令来启用模块。依次执行以下命令:
a2enmod cache
a2enmod cache_disk
执行后会看到“Module cache already enabled”或类似提示,表示模块已激活。如果没有该命令(如某些CentOS版本),可手动编辑配置文件,在httpd.conf中取消对应LoadModule行的注释:
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
配置缓存规则
模块启用后,需要设置缓存策略。可以在主配置文件或虚拟主机配置中添加缓存规则。例如,对静态资源(如图片、CSS、JS)设置600秒缓存:
<IfModule mod_cache.c>
CacheEnable disk "/static/"
CacheRoot /var/cache/apache2/mod_cache_disk
CacheDefaultExpire 600
CacheMaxExpire 86400
CacheIgnoreNoLastMod On
</IfModule>
其中,CacheRoot指定磁盘缓存目录,需确保该路径存在且Apache有读写权限:
sudo mkdir -p /var/cache/apache2/mod_cache_disk
sudo chown www-data:www-data /var/cache/apache2/mod_cache_disk
验证配置并重启服务
修改完成后,先检查配置语法是否正确:
apache2ctl configtest
显示“Syntax OK”后,重启Apache使配置生效:
systemctl restart apache2
systemctl restart httpd
测试缓存是否生效
通过浏览器开发者工具或curl命令查看响应头:
curl -I http://your-site/static/style.css
若返回头中包含X-Cache: HIT或类似字段,说明缓存已命中。首次访问可能是MISS,再次请求应变为HIT。
遇到问题时,可查看Apache错误日志定位原因:
tail -f /var/log/apache2/error.log