You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTTP/2 Push中rel=preload不生效:浏览器发起者显示HTML而非Push?

为什么你的CSS资源发起者是HTML而非Push?

这事儿其实是把Preload和HTTP/2 Server Push搞混啦,我给你拆解清楚:

1. Preload 不等于 Server Push

你代码里的 <link rel="preload" href="/test.css" as="style"> 只是给浏览器发了一个「提前加载这个资源」的指令——本质上还是浏览器收到HTML后,自己主动去请求这个CSS文件,所以发起者自然是HTML。

而Server Push是服务器主动把资源推送给浏览器,不需要浏览器先发起请求,这时候资源的Initiator才会显示成Push。

2. Apache需要额外配置才会开启Server Push

你用的Apache/2.4.29本身支持HTTP/2 Push,但默认不会自动识别preload标签去推送,得手动配置:

  • 方法一:直接在对应页面的配置里指定要推送的资源
    <Location "/test.html">
        http2_push /test.css;
    </Location>
    
  • 方法二:开启自动识别preload标签的功能
    http2_push_preload On;
    
    开启这个后,服务器会扫描HTML里的preload标签,自动推送对应的资源。

3. 验证Push是否生效的小技巧

配置完重启Apache后,打开浏览器开发者工具的Network面板:

  • 如果Push成功,CSS资源的Initiator列会显示「Push」
  • Size列会标注「(Push)」或者类似的标识

内容的提问来源于stack exchange,提问作者toxikas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:19:46