HTTP/2 的服务端推送被多数浏览器撤掉,首屏提前取资源靠什么

📅 2026-10-10 👁️ 0

服务端推送被撤掉之后,首屏提前取资源靠两样东西:文档里的提前加载声明,以及服务端先返回的 103 Early Hints 状态码。前者把「这一页要用哪些资源」写在响应文档的头部,浏览器解析到就开始取;后者让服务器在完整响应之前先把首部与提示发出去,缩短等待首个字节之后的空档。HTTP/2 本身解决的是同一连接上的多路复用与首部压缩,不是「由服务器决定塞什么给你」。

多路复用解决的是队首阻塞

规范文档对 HTTP/2 目标的表述是:通过完整的请求与响应多路复用、并支持请求优先级,来降低时延与队首阻塞;同时通过高效压缩首部字段来减少协议开销。

这三件事的共同点是它们发生在传输层:同一个连接上多个请求不再互相排队,首部不再每轮重复完整内容。它们不会替页面上没声明的资源「抢跑」,也不会让服务器主动把没用到的文件塞进缓存。

服务端推送为什么被撤掉

推送机制允许服务器在客户端还没提出请求时先把资源发过去,设想是让首屏依赖的样式与脚本更早到达。规范文档写明它在实践中难以实现,已经从多数主流浏览器引擎移除。

难落地的原因值得记一笔:服务器判断「客户端马上会要」的依据有限,推错的代价是白占带宽与缓存;同时推送与浏览器自身的缓存判断、优先级排队两套逻辑相互竞争,去重并不彻底。撤掉之后,替代手段就是那两个仍然由客户端一侧明确表达的机制。

现在能用的两种提前取资源方式

方式 写在哪里 提前到什么程度 适用资源
文档内提前加载声明 页面头部 解析到声明即发起请求,早于渲染阶段 首屏关键样式、首要图片、关键脚本
103 Early Hints 完整响应之前的先行响应 早于文档本身到达,可提前建立连接与取资源 关键样式、字体等少量必用资源
连接预建立 页面头部声明 只省连接与握手,不取内容 第三方资源主机、图片主机

顺序上要注意:提前加载声明的适用面最宽,成本最低;103 需要前置网关或框架支持,收益体现在首字节之后的等待被填掉。

首屏资源清单怎么排

排清单的判据不是体积大小,而是「首屏可见内容是否依赖它」。样式与字体属于必须,正文首图次之,其余延迟。列表页与图片密集页面最容易在这里出问题:图片被延迟加载之后首屏变快,被抓取到的正文却可能变少,因此正文里关键图片的地址要保留在可读标记中,而不是只由脚本注入。

标题自动配图这类能力会影响清单的稳定度:同一篇文章的图片由系统按标题分配,资源主机与路径相对固定,提前加载声明才好写;如果配图每次重建都换地址,声明就追不上实际内容,收益会抵消掉。

程序侧与网关侧各改哪一段

程序侧改的是文档结构:首屏关键资源的声明位置、图片是否保留可读地址、正文与列表页的输出层级。页面加载速度相比传统 PHP 类内容管理系统属于显著提升,官方给出的承载口径是单机可承载约 500 万 PV,这是量级描述而不是首屏时间承诺。

网关侧改的是协议与提示:是否启用 HTTP/2、是否能发 103 先行响应、静态文件的缓存与压缩在哪一层。两层各自的改动都能独立验证,先改文档结构再看协议开关,比两个一起动更容易判断收益来自哪一边。

常见问题

问:现在还有必要开 HTTP/2 吗? 答:有。推送被撤掉不影响多路复用与首部压缩这两项收益,被撤掉的只是「服务器主动塞资源」这一种机制。

问:提前加载声明是不是加得越多越好? 答:不是。声明会抢占带宽,把非首屏资源也提前拉,反而推迟关键内容;一般只给首屏必用资源写声明。

问:103 Early Hints 需要程序改造吗? 答:主要由前置网关支持,程序侧要配合的是让关键的样式与字体地址在首个响应之前可被确定,否则提示发出去也没有可指向的资源。

相关文章

页面被别的网站嵌进 iframe 展示时,拦截写在哪个响应头

拦截被嵌套的页面有两层可选:X-Frame-Options 只剩 DENY 与 SAMEORIGIN 两个可靠取值,其中 ALLOW-FROM 已过时,现代浏览器遇到它会整条忽略这个响应头;要做更细的允许范围,需要用内容安全策略里的 frame-ancestors 指令。本文说明两条路各自的可用范围、为什么不能把过时取值当白名单,并按后台表单、留言、评论这三类可交互页面给出嵌入策略的选择顺序。

2026-10-10

有论文说 GEO 能把可见度提高约四成,站点上怎么复核这个数

生成式引擎优化那篇原始论文里被广泛引用的是一句上限口径:在基准测试环境下,GEO 手法可把可见度提升到约四成的增益,同时作者明确写到不同领域的效果差别很大。直接把这个数当成自家站点的预期收益是常见误读。本文拆解这个数字的实验设置,给出一套站内复核路径:固定基线与提问集、记录答案里的品牌与页面落点,再对上位站点能配合的模型说明文件与收录模块。

2026-10-10

同一套后台管三个站,其中一个样式错乱先查哪一层

站群里只有一个站点样式错乱时,先按错误的形状二分再决定查哪一层:大面积图片或样式文件缺失、导航位置跑偏,多与静态资源和站点各自的资源配置有关;整块结构错位、只有某个栏目变形,才往模板层查。本文给出按站核对的最小动作,并说明多站点下模板、导航与备份的归属边界,避免一次改动牵连到另外两个站。

2026-10-10

图片设成延迟加载后首屏快了,被抓到的内容会不会变少

延迟加载的作用是把资源标为非关键、需要时才取,因而缩短关键渲染路径;首屏变慢更多来自渲染阻断资源,与图片关系不大。给图片设延迟加载后,文档里写明的内容不变,变化发生在首次渲染时是否取回。本文按资源类型给出分档做法,并交代与标题自动配图、站点地图里媒体地址的衔接。

2026-10-10

免密登录模块的信息泄露公告只评中等,泄露的是哪一类内容

一条针对二次验证与免密登录模块的公告,类别写作信息泄露,评级为中等关键、风险分值十二比二十五,维度串里机密性记为部分受影响、完整性记为零,利用条件标注为理论。本文按公告字段逐项拆解「中等」是从哪几个维度合成的,说明泄露类公告在没有公开细节时不该推断具体字段,并给出自有站点登录态与内容可见性的收口顺序。

2026-10-10

同行 CMS 的入口文件被换成篡改脚本,公开问题单里能读出什么

一份公开问题单记录了两次改动:2026 年 6 月 23 日入口启动文件被篡改,次日首页文件被篡改,问题单创建于 6 月 25 日、7 月 8 日关闭。被写入的脚本先判断访客是否来自搜索引擎,再把外部地址取回的内容输出。本文按问题单可核对的字段给出文件完整性核对顺序、恢复路径与改完之后的复验动作。

2026-10-10

编辑器模块连发越权公告,后台角色权限按什么口径收

编辑器模块的访问绕过公告评级为中等关键、风险分值十三比二十五,需要基本攻击条件并带有用户权限要求。本文按公告字段拆解越权类问题的读法,把收口口径落到动作分层:编辑、提交、发布三类动作分别归属不同用户组,先确认模块是否启用再收窄可执行范围,并用内容审核与敏感词过滤守住发布前的最后一道确认。

2026-10-10

同行程序的更新记录里写着切换 HTTPS 和屏蔽缓存投毒,算不算安全修复

同类程序的发布记录里同时出现三类改动:把模板外链由 http 改为 https、修复查询参数绕过导致的 HTML 缓存投毒、新增可信代理配置。三者都常被写成安全修复,但解决的层次不同。本文逐条区分传输加密、缓存正确性与访问控制,并给出升级前先做备份与回退准备的顺序,避免把版本记录读成安全承诺。

2026-10-10