Debian Apache缓存如何设置
小樊
44
2025-11-24 05:28:21
Debian 上 Apache 缓存设置指南
一 核心思路与模块
- 使用 mod_cache + mod_cache_disk 实现服务器端页面/资源缓存(反向代理或本地内容均可)。
- 使用 mod_expires + mod_headers 控制浏览器缓存策略(Cache-Control、Expires)。
- 可选:使用 mod_file_cache 做文件句柄/元数据层面的内存缓存(适合极少变动的静态文件)。
二 安装与启用模块
- 安装模块(Debian 包名):
- sudo apt update
- sudo apt install libapache2-mod-cache libapache2-mod-cache-disk
- sudo a2enmod cache cache_disk
- 如需浏览器缓存:sudo a2enmod expires headers
- 如需文件句柄缓存:sudo a2enmod file_cache
- 重启生效:sudo systemctl restart apache2
三 配置服务器端磁盘缓存
- 准备缓存目录并设置权限(示例路径:/var/cache/apache2/mod_cache_disk):
- sudo mkdir -p /var/cache/apache2/mod_cache_disk
- sudo chown -R www-data:www-data /var/cache/apache2/mod_cache_disk
- sudo chmod -R 755 /var/cache/apache2/mod_cache_disk
- 全局或虚拟主机配置示例(放在 内或 /etc/apache2/conf-available/cache.conf 后 a2enconf):
-
# 对全站启用磁盘缓存(也可改为 限定路径)
CacheEnable disk /
CacheRoot "/var/cache/apache2/mod_cache_disk"
CacheDirLevels 2
CacheDirLength 1
CacheDefaultExpire 3600
CacheMaxExpire 86400
CacheIgnoreHeaders Set-Cookie
CacheIgnoreNoLastMod On
CacheIgnoreQueryString On
CacheLockOnPost On
CacheLockPath /tmp/mod_cache_lock
CacheLockMaxAge 5
CacheStorePrivateFiles On
# 仅缓存指定 MIME 类型(可按需增减)
CacheableMimeType text/html text/css application/javascript image/png image/jpeg image/svg+xml
- 说明:
- CacheIgnoreQueryString On 会忽略查询串差异,提升命中率(适合带无意义参数的静态资源)。
- 对含用户身份信息的页面请勿开启服务器端缓存,或改为更严格的匹配策略。
四 配置浏览器缓存与文件句柄缓存
- 浏览器缓存(mod_expires + mod_headers,建议对静态资源设置较长 max-age):
-
ExpiresActive On
ExpiresDefault "access plus 1 week"
ExpiresByType text/html "access plus 1 week"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
- 如需统一覆盖:Header set Cache-Control “public, max-age=31536000”(1 年)
- 文件句柄/元数据缓存(mod_file_cache,适合极稳定文件):
- CacheFile /var/www/html/index.html /var/www/html/logo.png
- 提示:对带指纹/版本号的静态资源(如 app.a1b2c3.js)可设置更长缓存;对 HTML 通常设置较短时间或配合协商缓存。
五 验证与运维
- 检查模块与配置语法:
- apache2ctl -M | egrep ‘cache|expires|headers|file_cache’
- sudo apache2ctl configtest
- 验证命中与响应头:
- curl -I https://your-domain/static/app.js
- 关注:Cache-Control、Expires、Age、X-Cache(命中时常见为 HIT)
- 日志与目录维护:
- 观察错误日志:tail -f /var/log/apache2/error.log
- 定期清理缓存目录或在低峰期重建,避免陈旧内容长期占用。