apache 通过 link 响应头实现 https 下资源预加载,需启用 mod_ssl、正确配置 tls 和证书,并在虚拟主机中用 header add link 添加绝对路径的 preload 指令,避免使用已淘汰的 http/2 server push。

Apache 支持 HTTPS 下的资源预加载,核心是通过 Link 响应头声明 rel=preload,而不是依赖已淘汰的 HTTP/2 Server Push。它兼容 HTTP/1.1 和 HTTP/2,语义明确、浏览器缓存策略清晰,且无需额外模块。
启用 SSL 模块并确认 HTTPS 已正常工作
预加载必须运行在安全上下文中,HTTPS 配置不完整会导致 Link 头被浏览器忽略:
- 确保已启用
mod_ssl:执行a2enmod ssl(Debian/Ubuntu)或确认LoadModule ssl_module modules/mod_ssl.so在配置中已取消注释 - 虚拟主机必须监听 443 端口,并启用
SSLEngine on - 证书文件路径正确:
SSLCertificateFile指向公钥(如fullchain.pem),SSLCertificateKeyFile指向私钥(如privkey.pem) - 禁用 TLS 1.0/1.1,仅保留 TLS 1.2+;推荐加密套件如
ECDHE-ECDSA-AES128-GCM-SHA256 - 检查站点无混合内容:所有资源(CSS、JS、字体等)均使用
https://或协议相对路径
在响应中添加 Link 预加载头
使用 Header add Link 指令,在匹配特定页面(如 HTML 主页)的 <virtualhost></virtualhost> 或 <location></location> 块内配置:
- 路径必须为绝对路径(以
/开头),且资源可通过 HTTPS 直接访问(例如https://example.com/style.css返回 200) -
as属性必须准确匹配资源类型:style、script、font、image、document等 - 每条预加载单独一行,引号包裹整个值,注意空格与分号格式
示例配置(放在 <virtualhost></virtualhost> 内):
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
Header add Link "/main.css>; rel=preload; as=style"
Header add Link "/app.js>; rel=preload; as=script"
Header add Link "/inter.woff2>; rel=preload; as=font; crossorigin"
避免使用已被弃用的 HTTP/2 推送
Apache 的 H2Push on 或 H2PushResource 指令虽仍存在,但现代浏览器已基本停用 Server Push:
- Chrome 自 96 版起完全移除支持,Firefox 也已停用
- 无法感知客户端缓存状态,易重复推送已缓存资源
- 仅对 HTTP/2 连接生效,HTTP/1.1 用户完全无感知
- 与 HTML 中的
<link rel="preload">冲突,可能干扰浏览器资源调度 - DevTools 中不再显示 “Push” 标识,调试困难
因此,不要依赖 H2Push,坚持使用 Header add Link 是当前最可靠的方式。
可选:配合 103 Early Hints 提升加载效率
若 Apache 版本 ≥ 2.4.52 且启用了 mod_http2,可进一步利用 103 Early Hints,让浏览器在主响应到达前就开始预加载:
- 需在配置中启用
H2EarlyHints on - 搭配
Header add Link使用,效果更佳(例如在<location></location>中同时设置) - 注意:并非所有客户端都支持 103,但不支持的会直接忽略该响应,不影响主流程










