apache代理缓存需安装后手动启用mod_cache与mod_cache_disk模块,配置cacheroot并授权,通过启用磁盘缓存,配合mod_expires设置浏览器强缓存,实现服务端与客户端双层加速。

Apache 安装时本身不默认启用代理缓存功能,需要在安装后手动加载模块、配置路径和策略。核心不是“安装时配”,而是“安装后立即配”——因为缓存能力依赖运行时模块与磁盘权限,必须在服务启动前完成初始化。
确认并启用必需模块
代理缓存需两个基础模块协同工作:mod_cache(缓存框架)和 mod_cache_disk(磁盘存储后端)。仅启一个无效。
- Debian/Ubuntu 系统执行:sudo a2enmod cache cache_disk proxy proxy_http
- RHEL/CentOS 7+ 检查
/etc/httpd/conf.modules.d/00-base.conf,确保以下四行未被注释:LoadModule cache_module modules/mod_cache.soLoadModule cache_disk_module modules/mod_cache_disk.soLoadModule proxy_module modules/mod_proxy.soLoadModule proxy_http_module modules/mod_proxy_http.so - 验证是否生效:
apachectl -M | grep -E "(cache|proxy)"应同时输出cache_module、cache_disk_module、proxy_module和proxy_http_module
设置安全可写的缓存根目录
mod_cache_disk 必须写入本地磁盘,路径不能是临时目录、NFS 或受 SELinux 严格限制的区域(CentOS 7 尤其注意)。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 创建目录并授权:
sudo mkdir -p /var/cache/apache2/mod_cache_disksudo chown www-data:www-data /var/cache/apache2/mod_cache_disk(Ubuntu/Debian)sudo chown apache:apache /var/cache/apache2/mod_cache_disk(RHEL/CentOS) - 在配置中声明:
<ifmodule mod_cache_disk.c></ifmodule>CacheRoot /var/cache/apache2/mod_cache_diskCacheDirLevels 2CacheDirLength 1 - 禁止设为
/tmp或用户家目录;剩余空间建议 ≥5GB,避免缓存因磁盘满而静默失效
只对静态资源路径启用缓存(非 DocumentRoot)
代理缓存不作用于本地文件服务(DocumentRoot),而是针对 ProxyPass 转发后返回的内容。所以要先定义静态资源专属路径(如 /static/),再用反向代理将其指向本地目录,并在此路径上启用缓存。
- 添加代理规则(放在所有 ProxyPass 之前):
ProxyPass /static/ !Alias /static/ /var/www/myapp/static/<directory></directory>Require all granted - 再启用该路径的缓存:
<location></location>CacheEnable diskCacheIgnoreHeaders Set-CookieCacheIgnoreNoLastMod On - 这样 Apache 对
/static/logo.png的响应会先由本地读取,再缓存到磁盘,后续请求直接从缓存返回,跳过文件系统 I/O
配合浏览器强缓存提升整体效果
服务器端缓存 + 浏览器端缓存是双保险。静态资源一旦命中服务器缓存,就应鼓励浏览器长期复用。
- 启用 mod_expires 和 mod_headers:
a2enmod expires headers - 在
<location></location>块内添加:ExpiresActive OnExpiresByType image/png "access plus 1 year"ExpiresByType text/css "access plus 1 month"Header set Cache-Control "public, max-age=31536000" - 重启 Apache 后,用浏览器开发者工具检查响应头,确认同时存在
Expires和Cache-Control










