温馨提示×

怎样配apache2缓存

小樊
40
2026-10-13 23:47:17
栏目: 编程语言

下面按常见用法给你讲「Apache2 缓存配置」的几种方式,从简单到进阶,你可以按需求选。


一、浏览器端缓存(最常用:Expires / Cache-Control)

适合:静态资源(css、js、图片等)

1️⃣ 启用模块

sudo a2enmod expires
sudo a2enmod headers
sudo systemctl restart apache2

2️⃣ 配置缓存规则

在虚拟主机或 .htaccess 中:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 7 days"
    ExpiresByType application/javascript "access plus 7 days"
    ExpiresByType image/jpeg "access plus 30 days"
    ExpiresByType image/png "access plus 30 days"
</IfModule>

3️⃣ 加 Cache-Control(可选)

<IfModule mod_headers.c>
    <FilesMatch "\.(css|js|jpg|png|gif)$">
        Header set Cache-Control "max-age=604800, public"
    </FilesMatch>
</IfModule>

二、Apache 服务端缓存(mod_cache)

适合:反向代理 / 动态页面加速

1️⃣ 启用模块

sudo a2enmod cache
sudo a2enmod cache_disk
sudo systemctl restart apache2

2️⃣ 基本磁盘缓存配置

<IfModule mod_cache.c>
    CacheEnable disk /
    CacheRoot /var/cache/apache2/mod_cache_disk
    CacheDirLevels 2
    CacheDirLength 1
    CacheDefaultExpire 3600
</IfModule>

创建缓存目录:

sudo mkdir -p /var/cache/apache2/mod_cache_disk
sudo chown -R www-data:www-data /var/cache/apache2/mod_cache_disk

三、反向代理缓存(常用)

如果你用 Apache 做代理:

ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/

CacheEnable disk /
CacheIgnoreHeaders Set-Cookie

四、不缓存某些内容

CacheDisable /admin
CacheDisable /api

或在 PHP 中:

header("Cache-Control: no-store, no-cache, must-revalidate");

五、检查是否生效

curl -I http://your-site.com/style.css

看到:

Cache-Control: max-age=604800
Expires: ...

就说明成功。


推荐方案总结

场景 推荐
普通网站 Expires + Headers
API 不缓存
高并发 mod_cache + 反向代理

如果你告诉我:

  • Ubuntu / Debian / CentOS?
  • 是否用 PHP / 反向代理?
  • 静态站还是动态站?

我可以给你直接可用的配置模板。

0 踩