在搭建个人博客或小型网站时,访问速度直接影响用户体验。比如你发了一篇新文章,朋友点击链接却要等好几秒才加载出来,多半是服务器没做优化。Apache作为常见的Web服务器,合理开启缓存能显著提升响应速度,关键指标就是缓存命中率。
为什么要关注缓存命中率
缓存命中率高,意味着大多数请求都能直接从内存或磁盘缓存中获取资源,不用每次都重新生成页面或读取文件。像图片、CSS、JS这类静态资源,几乎不需要改动,完全适合被缓存。如果每次访问都重新传输这些内容,不仅拖慢速度,还浪费带宽。
启用mod_cache模块
Apache默认可能未开启缓存功能,需要先确认并启用相关模块。常见的有mod_cache和mod_file_cache。在Linux系统中,可以通过以下命令开启:
a2enmod cache
a2enmod cache_disk
a2enmod cache_socache
然后重启Apache服务:
systemctl restart apache2
配置缓存策略
在虚拟主机配置文件或.htaccess中添加缓存规则。例如,对图片、样式表和脚本设置6小时的过期时间:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 6 hours"
ExpiresByType image/jpeg "access plus 6 hours"
ExpiresByType image/gif "access plus 6 hours"
ExpiresByType image/png "access plus 6 hours"
ExpiresByType text/css "access plus 6 hours"
ExpiresByType application/javascript "access plus 6 hours"
</IfModule>
设置磁盘缓存路径
为了让Apache把动态内容也缓存下来,可以配置磁盘缓存目录。在httpd.conf或站点配置中加入:
CacheEnable disk /
CacheRoot /var/cache/apache2/mod_cache_disk
CacheDefaultExpire 3600
CacheMaxExpire 86400
确保目录存在且Apache有读写权限:
mkdir -p /var/cache/apache2/mod_cache_disk
chown www-data:www-data /var/cache/apache2/mod_cache_disk
验证缓存是否生效
用浏览器开发者工具查看响应头,如果看到X-Cache: HIT或类似字段,说明缓存已命中。也可以用curl命令快速测试:
curl -I http://your-site.com/style.css
返回头中包含Age或Expires信息,就表示资源已被缓存。
实际使用中,比如你托管了一个Markdown文档站,访客频繁查看同一页面,开启缓存后服务器压力明显下降,加载几乎瞬间完成。调好一次配置,后续省心不少。