centos apache2缓存配置技巧
1. 启用必要缓存模块
在CentOS上,Apache2的缓存功能依赖mod_cache
(核心缓存框架)、mod_cache_disk
(磁盘缓存后端)和mod_expires
(过期时间控制)模块。首先通过YUM安装这些模块:
sudo yum install mod_cache mod_cache_disk mod_expires
安装完成后,在Apache配置文件(如/etc/httpd/conf/httpd.conf
或/etc/httpd/conf.d/cache.conf
)中启用模块(CentOS 7及以上版本模块通常通过conf.modules.d
目录下的.conf
文件启用,无需手动编辑主配置文件):
LoadModule cache_module modules/mod_cache.so
LoadModule cache_disk_module modules/mod_cache_disk.so
LoadModule expires_module modules/mod_expires.so
重启Apache使模块生效:
sudo systemctl restart httpd
2. 配置磁盘缓存(核心静态内容缓存)
磁盘缓存是Apache2最常用的缓存方式,适用于静态资源(如CSS、JS、图片)。在配置文件中添加以下内容:
<
IfModule mod_cache.c>
<
IfModule mod_cache_disk.c>
# 启用磁盘缓存,指定缓存路径(可自定义)
CacheEnable disk /static
# 缓存根目录(需确保Apache有读写权限)
CacheRoot "/var/cache/apache2/mod_cache_disk"
# 缓存目录结构:2级子目录,每级目录名长度为1(优化IO性能)
CacheDirLevels 2
CacheDirLength 1
# 默认过期时间(1小时)
CacheDefaultExpire 3600
# 最大过期时间(1天,避免长期不更新)
CacheMaxExpire 86400
# 忽略Set-Cookie头(防止缓存带会话信息的页面)
CacheIgnoreHeaders Set-Cookie
# 即使资源未修改,也允许缓存(减少回源请求)
CacheIgnoreNoLastMod On
<
/IfModule>
<
/IfModule>
注意:/static
是缓存路径前缀,可根据需求修改(如/images
、/js
);CacheRoot
目录需手动创建并赋予权限:
sudo mkdir -p /var/cache/apache2/mod_cache_disk
sudo chown -R apache:apache /var/cache/apache2/mod_cache_disk
3. 设置过期时间(精准控制缓存策略)
通过mod_expires
模块为不同文件类型设置过期时间,让浏览器主动缓存资源,减少服务器请求。在配置文件中添加:
<
IfModule mod_expires.c>
# 启用过期时间控制
ExpiresActive On
# 默认过期时间(1年,适用于长期不变的静态资源)
ExpiresDefault "access plus 1 year"
# HTML文件(1小时,适合频繁更新的页面)
ExpiresByType text/html "access plus 1 hour"
# CSS/JS文件(1周)
ExpiresByType text/css "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
# 图片文件(1个月)
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
<
/IfModule>
配置后,Apache会在响应头中添加Expires
和Cache-Control
字段,告知浏览器资源的过期时间。
4. 启用压缩(减少传输体积)
使用mod_deflate
模块压缩文本内容(HTML、CSS、JS),降低带宽占用,提升加载速度。在配置文件中添加:
<
IfModule mod_deflate.c>
# 压缩以下类型的文件
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/javascript application/json
# 排除IE6(兼容性问题)
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
<
/IfModule>
重启Apache后,响应头中会出现Content-Encoding: gzip
,表示内容已压缩。
5. 优化KeepAlive(减少连接开销)
KeepAlive允许客户端在一个TCP连接上发送多个请求,减少连接建立和关闭的时间。在配置文件中调整:
# 启用KeepAlive
KeepAlive On
# 每个连接最大请求数(避免单个连接占用过多资源)
MaxKeepAliveRequests 100
# 连接超时时间(5秒,平衡响应速度和资源占用)
KeepAliveTimeout 5
此配置能显著提升并发请求的处理效率,尤其适合静态资源较多的网站。
6. 验证缓存配置
使用curl
命令检查响应头,确认缓存是否生效:
curl -I http://yourdomain.com/static/image.jpg
若看到以下头部信息,说明缓存配置成功:
HTTP/1.1 200 OK
Cache-Control: max-age=31536000, public
Expires: Thu, 21 Oct 2026 07:28:00 GMT
Content-Encoding: gzip
其中Cache-Control
和Expires
字段表示浏览器缓存策略,Content-Encoding: gzip
表示内容已压缩。
注意事项
- 缓存目录权限:确保
CacheRoot
目录(如/var/cache/apache2/mod_cache_disk
)的属主为apache
,且具备读写权限(chmod -R 755 /var/cache/apache2/mod_cache_disk
)。 - 敏感内容排除:避免缓存包含
Set-Cookie
、Authorization
头的页面(如登录页面),可通过CacheIgnoreHeaders
指令设置。 - 动态内容缓存:若需缓存动态内容(如PHP页面),需结合
mod_cache_socache
模块和Memcached等后端缓存,但需谨慎配置以避免数据不一致。 - 定期清理缓存:可通过
cron
任务定期清理CacheRoot
目录(如每月1号凌晨清理):0 0 1 * * /bin/rm -rf /var/cache/apache2/mod_cache_disk/*
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos apache2缓存配置技巧
本文地址: https://pptw.com/jishu/717456.html