centos

CentOS Apache2缓存机制如何优化

小樊
53
2025-10-02 19:40:04
栏目: 智能运维

1. 启用并配置核心缓存模块
首先安装并启用mod_cache(缓存核心模块)和mod_cache_disk(磁盘缓存模块),这是Apache缓存的基础。通过以下命令启用:

sudo yum install mod_cache mod_cache_disk  # CentOS系统
sudo systemctl restart httpd

在配置文件(如/etc/httpd/conf/httpd.conf或站点配置文件)中添加磁盘缓存规则:

<IfModule mod_cache.c>
    <IfModule mod_cache_disk.c>
        CacheEnable disk /  # 对根路径启用磁盘缓存
        CacheRoot "/var/cache/apache2/mod_cache_disk"  # 缓存存储目录
        CacheDirLevels 2  # 缓存目录层级(避免单目录文件过多)
        CacheDirLength 1  # 每级目录名称长度(优化目录结构)
        CacheDefaultExpire 3600  # 默认缓存过期时间(1小时)
        CacheIgnoreHeaders Set-Cookie  # 忽略Set-Cookie头(避免缓存敏感数据)
        CacheIgnoreNoLastMod On  # 忽略Last-Modified缺失的情况
    </IfModule>
</IfModule>

2. 配置静态资源长期缓存
使用mod_expires模块为静态文件(图片、CSS、JS等)设置长期缓存,减少浏览器重复请求。在配置文件中添加:

<IfModule mod_expires.c>
    ExpiresActive On  # 开启过期头控制
    ExpiresByType image/jpeg "access plus 1 month"  # JPEG图片缓存1个月
    ExpiresByType image/png "access plus 1 month"   # PNG图片缓存1个月
    ExpiresByType text/css "access plus 1 week"     # CSS文件缓存1ExpiresByType application/javascript "access plus 1 week"  # JS文件缓存1ExpiresByType text/html "access plus 1 hour"    # HTML缓存1小时(动态内容可缩短)
</IfModule>

同时配合mod_headers设置Cache-Control头,增强缓存控制:

<IfModule mod_headers.c>
    <FilesMatch "\.(jpg|jpeg|png|gif|css|js)$">
        Header set Cache-Control "public, max-age=31536000, immutable"  # 公共缓存1年(immutable表示内容不变)
    </FilesMatch>
</IfModule>

3. 启用传输压缩优化带宽
使用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>

4. 调整缓存参数优化性能
根据服务器磁盘空间和访问频率调整缓存参数:

5. 配置KeepAlive提升并发
启用KeepAlive减少TCP连接建立/关闭的开销,提升缓存命中率。在配置文件中添加:

KeepAlive On  # 开启KeepAlive
MaxKeepAliveRequests 100  # 单个连接最大请求数(避免单个连接占用过久)
KeepAliveTimeout 5  # 连接保持时间(秒)

6. 监控与维护缓存

7. 可选:使用第三方缓存层
对于高流量网站,可结合Nginx作为反向代理缓存层,进一步提升性能。安装Nginx后配置缓存:

http {
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m;
    server {
        location /static/ {
            proxy_pass http://apache_backend;  # 指向Apache服务器
            proxy_cache my_cache;
            proxy_cache_valid 200 302 1h;  # 缓存200/302状态码1小时
            proxy_cache_use_stale error timeout updating;
        }
    }
}

0
看了该问题的人还看了