ServerName 仅标识虚拟主机域名,不控制资源过期;真正生效的是 mod_expires 模块,需启用 ExpiresActive 并用 ExpiresByType 按 MIME 类型设置差异过期时间,再配合 mod_headers 添加 Cache-Control 提升兼容性。

Apache 中 ServerName 本身与资源过期控制无关,它仅用于标识虚拟主机的主域名(如 ServerName example.com),不参与缓存策略配置。真正控制静态资源(如 CSS、JS、图片)过期时间的是 mod_expires 模块,需配合 ExpiresActive、ExpiresByType 或 ExpiresDefault 等指令使用。
要为不同资源类型设置差异化过期时间,关键步骤如下:
启用 mod_expires 并开启过期功能
确保模块已加载(通常在 httpd.conf 或 apache2.conf 中取消注释):
LoadModule expires_module modules/mod_expires.so
然后在 <Directory>、<VirtualHost> 或 .htaccess 中启用:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
ExpiresActive On
按 MIME 类型分别设置过期时间
使用 ExpiresByType 为常见资源指定相对过期时长(单位:秒、分钟、小时、天):
- CSS、JS 文件建议缓存 1 周
- 图片(JPEG/PNG/GIF)可设为 1 个月
- 字体文件(woff2、ttf)通常长期缓存(1 年)
- HTML 页面一般禁用或设为 0(避免缓存旧页面)
示例配置:
ExpiresByType text/css "access plus 1 week" ExpiresByType application/javascript "access plus 1 week" ExpiresByType image/jpeg "access plus 1 month" ExpiresByType image/png "access plus 1 month" ExpiresByType image/gif "access plus 1 month" ExpiresByType font/woff2 "access plus 1 year" ExpiresByType font/ttf "access plus 1 year" ExpiresByType text/html "access plus 0 seconds"
注意 access 和 modification 的区别
-
access:以用户首次请求时间为基准(最常用) -
modification:以文件最后修改时间为基准(适合内容稳定、极少更新的静态站)
例如:ExpiresByType image/svg+xml "modification plus 1 month"
配合 Cache-Control 提升兼容性
mod_expires 会自动设置 Expires 响应头,但现代浏览器更依赖 Cache-Control。启用 mod_headers 后可补充:
<IfModule mod_headers.c> Header append Cache-Control "public" # 对 JS/CSS 加强验证机制(防止更新后用户仍用旧缓存) Header append Cache-Control "immutable" env=IS_CSS_JS </IfModule> # 可结合 SetEnvIf 为特定后缀设置环境变量 SetEnvIf Request_URI "\.(?:css|js)$" IS_CSS_JS
不复杂但容易忽略

















