温馨提示×

ubuntu apache2如何设缓存

小樊
47
2026-09-11 03:08:44
栏目: 智能运维

在 Ubuntu 上使用 Apache2 设置缓存,通常分为几种场景。下面按最常用、最实用的方式给你说明。


一、启用 Apache 自带缓存模块(推荐)

Apache 提供了一套缓存模块,常用组合是:

  • mod_cache
  • mod_cache_disk(磁盘缓存)
  • mod_expires(设置浏览器缓存时间)
  • mod_headers(控制缓存头)

1. 启用相关模块

sudo a2enmod cache
sudo a2enmod cache_disk
sudo a2enmod expires
sudo a2enmod headers
sudo systemctl restart apache2

二、配置静态资源浏览器缓存(最常见)

示例:对图片、CSS、JS 设置缓存

编辑站点配置(例如 /etc/apache2/sites-available/000-default.conf):

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html

    # 开启 Expires
    <IfModule mod_expires.c>
        ExpiresActive On
        ExpiresByType image/jpg "access plus 30 days"
        ExpiresByType image/png "access plus 30 days"
        ExpiresByType text/css "access plus 7 days"
        ExpiresByType application/javascript "access plus 7 days"
    </IfModule>

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

重启 Apache:

sudo systemctl restart apache2

三、Apache 服务器端磁盘缓存(反向代理缓存)

适合缓存动态页面或上游内容。

1. 配置缓存目录

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

2. 站点配置示例

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html

    CacheEnable disk "/"
    CacheRoot "/var/cache/apache2/mod_cache_disk"
    CacheDirLevels 2
    CacheDirLength 1
    CacheDefaultExpire 3600

    <Location "/">
        CacheEnable disk
        CacheHeader on
        CacheIgnoreNoLastMod On
    </Location>
</VirtualHost>

重启:

sudo systemctl restart apache2

四、禁止某些内容被缓存

<Location "/api/">
    CacheDisable on
</Location>

或:

Header set Cache-Control "no-store"

五、验证缓存是否生效

查看响应头

curl -I http://localhost/image.png

应看到:

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

六、常见问题

1. 修改配置不生效

  • 是否 restart apache2
  • 是否启用了对应模块

2. 动态页面没缓存

  • 检查是否返回 Set-Cookie
  • 检查 Cache-Control: no-cache

七、推荐方案总结

场景 推荐方式
静态资源 mod_expires + mod_headers
动态页面 mod_cache_disk
API 禁用缓存

如果你能告诉我:

  • 是 静态网站 / PHP / 反向代理?
  • 是否使用 WordPress / Laravel / Nginx 前置?

我可以给你更精确的配置。

0 踩