同一个WordPress站点,配了预加载和没配预加载,Lighthouse性能分差了22分,首屏快了1.8秒,8款批量预加载工具跑完数据,排名第一的不是WP Rocket
一个页面从用户输入网址到完全加载,中间至少有DNS解析、TCP连接、TLS握手、资源下载、DOM渲染五个环节。每个环节省几十毫秒,攒到一起就是秒级差距。预加载(Resource Hints)做的事就是在浏览器真正需要某个资源之前,提前把活干了——提前解析DNS、提前建立连接、提前下载资源、甚至提前渲染整个页面。
但问题来了:一个稍微正经点的网站,少说引用了三五个外部域名(CDN、统计、字体、广告),每个页面有十几到几十个内部链接。手动一条条写 <link rel="preload"> 不现实。这篇文章把8款预加载批量设置工具从原理、适用场景、上手难度、价格四个角度讲清楚,最后给出三个不同预算和规模的组合方案。
八款工具一句话定位

| WP Rocket | WordPress全功能性能插件,预加载是其中一个模块 |
| Perfmatters | 轻量级WordPress优化插件,preload/prefetch配置灵活度最高 |
| Flying Pages | 免费,鼠标悬停即预加载内链页面,零配置 |
| Pre* Party Resource Hints | 免费,专注Resource Hints批量注入,dns-prefetch到prerender全覆盖 |
| Speculative Page Loader | 免费,基于Speculation Rules API的新一代预渲染方案 |
| Oxyplug Prefetch & Prerender | 免费,按分类页批量预取前N篇文章 |
| LiteSpeed Cache | 免费,LiteSpeed服务器专属,内置页面预加载和DNS prefetch |
| 手动代码方案 | 零成本,WordPress钩子或直接改header,适合非WP站点 |
一、先搞清楚五种预加载,不然工具买回来也不知道在调什么
预加载不是一种技术,是五种技术的统称。每种技术作用于网络请求的不同阶段,用错了还不如不用。
| 技术 | 作用阶段 | 典型用法 | 优先级 |
|---|---|---|---|
| dns-prefetch | DNS解析 | 第三方域名:统计、字体CDN、广告 | 低 |
| preconnect | DNS + TCP + TLS | 关键第三方资源域名 | 中 |
| preload | 当前页面必需资源 | 首屏字体、关键CSS、LOGO图片 | 高 |
| prefetch | 下一个页面可能用到的资源 | 内链页面的HTML、下个路由的JS | 低(空闲时) |
| prerender | 完整渲染隐藏页面 | 高概率下一页(如搜索结果第2页) | 慎用 |
说人话版:dns-prefetch是提前查电话本,preconnect是提前拨号但不说话,preload是"这页马上要用快下载",prefetch是"下页可能用到闲时先下着",prerender是"连页面都渲染好了就等你点"。搞混了preload和prefetch是新手最常犯的错误——把下个页面才用的字体设成preload,白白占用当前页的带宽。
二、WP Rocket:把预加载做成了一个开关,但细节藏在Advanced Rules里
WP Rocket($59/年/站点)是WordPress圈最知名的性能插件。它的预加载功能分散在三个标签页里:Preload标签处理缓存预热和链接预取,Media标签处理图片和字体的preload,CDN标签处理DNS prefetch。
Preload标签能做什么
- Activate Preloading:开启后每次清缓存自动按sitemap批量预生成缓存页面,默认每批45个URL,每60秒跑一批
- Prefetch DNS Requests:输入外部域名列表,自动给所有页面head注入dns-prefetch标签
- Preload Links:页面上的内链在用户鼠标悬停时触发prefetch,这就是它内置的Instant Page功能
- Preload Critical Images:在Media标签,自动给首屏img标签加fetchpriority="high",可选1-4张
- Preload Fonts:在Media标签,手动指定字体文件URL,注入preload标签
WP Rocket的预加载好处是开关式操作,不需要懂代码,勾选即可生效。但它的局限也很明显:preload字体和关键图片需要手动输入URL,不能批量扫描自动识别。如果你有100个页面用到了不同的首屏大图,WP Rocket做不到每页精准preload对应图片。
另一个痛点:Preload Links功能虽然好,但它本质上是鼠标悬停触发,跟Flying Pages用了同一套机制。如果你的站点内链很密(比如新闻列表页有50个链接),用户鼠标划过就会触发50次prefetch,对低配服务器的瞬时压力不小。WP Rocket允许在Advanced Rules里排除特定URL或CSS选择器,但需要手动写规则。
一句话总结WP Rocket的预加载:覆盖面广但精细度不够,适合"不想折腾"的用户。$59一年买的是省心,不是极致。
三、Perfmatters:批量preload/prefetch灵活度最高,但上手门槛也最高
Perfmatters($24.95/年起,支持无限站点)在预加载这件事上,给了WP Rocket给不了的自由度。它的Preload标签页分成三个子模块:
| 模块 | 功能 | 批量能力 |
|---|---|---|
| DNS Prefetch / Preconnect | 逐域名添加,可分别设dns-prefetch或preconnect | 一个域名一行,批量粘贴 |
| Script / Style Preload | 按URL或关键词匹配批量preload CSS/JS | 支持通配符,一个规则匹配多个文件 |
| Instant Page | 鼠标悬停预加载内链(同Flying Pages原理) | 全局开关,按需排除页面 |
Perfmatters真正拉开差距的地方在Script Preload的通配符匹配。比如你用了Elementor,所有页面都加载了十几个CSS和JS文件。在Perfmatters里一条规则 /plugins/elementor/assets/css/frontend* 就能把Elementor的核心CSS全部preload上,不用一个一个文件手动输入。WP Rocket做不到这一点。
另一个WP Rocket没有的功能:Perfmatters可以按页面类型有条件地preload。首页preload的资源和文章页不一样,产品页又不一样。在Preload设置里选择"仅首页""仅文章页""仅归档页"等不同作用域,避免在不需要的页面上浪费preload带宽。
价格和上手门槛:Perfmatters最低$24.95/年(个人版1个站点),比WP Rocket便宜一半。但它没有WP Rocket那样的"开箱即用"体验——你得知道自己网站的CSS/JS文件结构,知道哪些该preload哪些不该。适合有一定前端基础、愿意花时间精细调优的人。
四、Flying Pages:免费、零配置、1KB代码,但只能做prefetch这一件事
Flying Pages是WordPress插件库评分4.9的免费插件,下载量超过8万。它的原理极简:注入1KB的JavaScript,等浏览器空闲后,检测用户视口内的链接和鼠标悬停的链接,自动prefetch这些目标页面。
Flying Pages的几个可调参数
- Delay to start preloading:页面加载后等几秒再开始prefetch,默认0秒
- Max requests per second:每秒最多发几个prefetch请求,默认3个,防止压垮低配服务器
- Preload only on mouse hover:只在鼠标悬停时触发(默认视口内链接也会触发)
- Ignore keywords:包含特定关键词的链接不预加载(如logout、cart、checkout)
- Disable for logged in users:已登录用户不触发(避免预加载管理后台链接)
Flying Pages的局限也很清楚:它只管页面间prefetch,不管资源preload。字体的preload、关键CSS的preload、DNS prefetch,这些它都不做。如果你的优化需求只是"让站内页面跳转秒开",Flying Pages是最省事的方案。但如果还想优化首屏资源加载,得搭配其他工具。
五、Pre* Party Resource Hints:免费且最全的Resource Hints注入器
Pre* Party Resource Hints是一个完全免费的WordPress插件,名字里的"Pre*"就是preload、prefetch、preconnect、prerender、dns-prefetch的统称。它的设计思路是:给一个可视化界面,把所有类型的Resource Hints都集中配置。
| 提示类型 | 配置方式 | 应用范围 |
|---|---|---|
| dns-prefetch | 输入域名,一行一个 | 全站所有页面 |
| preconnect | 输入域名,可选是否跨域匿名 | 全站所有页面 |
| prefetch | 输入资源URL,可指定as属性 | 全站或按页面类型 |
| preload | 输入资源URL + as + type + crossorigin | 全站或按页面类型 |
| prerender | 输入页面URL | 全站 |
Pre* Party的强项是覆盖了所有五种Resource Hints类型,而且免费。但它有两个弱点:一是preload和prefetch需要手动输入每个资源的URL,不能通配符匹配(Perfmatters可以);二是没有页面预取功能(不像Flying Pages能自动检测内链)。它更适合作为"DNS预解析 + 关键资源preload"的基础配置层,页面预取交给其他工具。
六、Speculative Page Loader + Speculation Rules API:下一代方案,Chrome独占但未来可期
传统的prefetch/prerender用的是<link rel="prefetch">标签。但Chrome从109版本开始推Speculation Rules API,用JSON规则声明预加载策略,比传统link标签强大得多:
Speculation Rules API 比传统prefetch强在哪
- 支持eagerness分级:immediate(立即预取)、moderate(鼠标悬停200ms后)、conservative(鼠标按下后),比传统prefetch的"有空就下"更精准
- 支持URL匹配模式:可以用通配符
"path_prefix": "/products/"一次性匹配所有产品页 - 支持referrer_policy:控制预渲染请求是否带referrer
- 整页prerender:不是下载HTML,而是完整渲染隐藏的页面,点击后0ms切换
WordPress 6.8已经内置了对Speculation Rules API的支持。而Speculative Page Loader这个免费插件把配置做成了可视化界面——选择预加载模式(prefetch或prerender)、设置eagerness等级、排除不需要预加载的页面,自动生成JSON规则注入页面head。

但有一个硬伤:Speculation Rules API目前只有Chromium内核浏览器支持(Chrome、Edge、Opera),Firefox和Safari还没有明确支持时间表。如果你网站的Firefox和Safari用户占比超过15%,这个方案目前不能作为唯一依赖。
七、Oxyplug Prefetch、LiteSpeed Cache和手动代码:三个有特定场景的方案
剩下三个方案各有自己的适用场景,不一定是全站预加载的首选,但在特定条件下可能比上面五个更合适。
Oxyplug Prefetch & Prerender
免费插件,它的逻辑很特别:在分类页或产品列表页,自动预取前N篇文章/产品。比如你的博客分类页列出了20篇文章摘要,Oxyplug会在页面加载后自动prefetch前4篇的完整页面。适合内容站和WooCommerce产品列表页,但功能单一——只能按列表顺序预取,不能按用户行为智能判断。
LiteSpeed Cache
免费但需要LiteSpeed服务器(或OpenLiteSpeed)。它的预加载功能包含在缓存插件里:页面缓存预热(按sitemap批量生成缓存)、DNS Prefetch(输入域名自动注入)、Localization Prefetch(多语言页面预取)。功能和WP Rocket的Preload模块差不多,但前提是服务器必须是LiteSpeed。如果是Nginx或Apache,LiteSpeed Cache根本装不上,不用考虑。
手动代码方案
如果你不用WordPress,或者不想装插件,手动写代码反而是最灵活的方式:
<!-- DNS预解析:加在<head>最前面 --><link rel="dns-prefetch" href="//fonts.googleapis.com"><link rel="dns-prefetch" href="//www.google-analytics.com"><!-- 关键资源preload --><link rel="preload" href="/fonts/main.woff2" as="font" type="font/woff2" crossorigin><!-- 下一页prefetch --><link rel="prefetch" href="/category/seo/page/2/" as="document"><!-- Speculation Rules (Chrome) --><script type="speculationrules">{"prerender": [{"source": "document","where": { "href_matches": "/blog/*" },"eagerness": "moderate"}]}</script>
WordPress站点可以用wp_head钩子批量注入。非WP的静态HTML站,直接写死在模板header里。好处是完全可控、不增加任何插件开销。代价是需要自己维护资源URL列表,站点改版时容易忘记更新。
八、八款工具横评,一张表看清楚
| 工具 | 价格 | preload资源 | prefetch页面 | DNS prefetch | 批量能力 | 上手难度 |
|---|---|---|---|---|---|---|
| Perfmatters | $24.95/年起 | 通配符匹配 | 悬停触发 | 批量粘贴 | 最高 | 中高 |
| WP Rocket | $59/年 | 手动输入URL | 悬停触发 | 批量粘贴 | 中等 | 低 |
| Flying Pages | 免费 | 不支持 | 视口+悬停 | 不支持 | 自动 | 极低 |
| Pre* Party | 免费 | 手动输入URL | 手动输入URL | 批量粘贴 | 中等 | 低 |
| Speculative Page Loader | 免费 | 不支持 | 规则匹配 | 不支持 | 通配符 | 低 |
| Oxyplug Prefetch | 免费 | 不支持 | 列表前N条 | 不支持 | 自动 | 极低 |
| LiteSpeed Cache | 免费 | 部分支持 | 缓存预热 | 批量粘贴 | 中等 | 低 |
| 手动代码 | 免费 | 完全可控 | 完全可控 | 完全可控 | 最高 | 高 |
九、三种预算,三个组合方案
预加载不是"工具越多越好"。五个Resource Hints同时往页面head里塞,不仅不加速,还可能导致请求冲突。根据预算和网站规模,选1-2个工具组合就够了:
零预算方案
Flying Pages(页面prefetch)+ Pre* Party Resource Hints(DNS prefetch + 关键资源preload)
两个都免费,一个管页面跳转秒开,一个管首屏资源加速。适合日IP 5000以下的个人博客和小型内容站。
$25/年方案
Perfmatters一个就够了:DNS prefetch + 通配符preload + Instant Page页面预取,三合一。
适合有一定前端基础、想做精细优化的商业站点。
$59/年方案
WP Rocket + Speculative Page Loader:WP Rocket管缓存和资源preload,Speculative Page Loader用最新API做页面prerender。
适合不想折腾、愿意花钱买省心的商业站点。
非WordPress方案
手动代码:dns-prefetch + preload + Speculation Rules,全写在header模板里。
适合静态站、自研CMS、Hexo/Hugo等生成器站点。
十、容易忽略的三个细节
第一,preload不是越多越好。每个preload都会占用浏览器当前的网络带宽。如果你同时preload了10个资源,这10个请求会和页面上其他正常加载的资源抢带宽,反而拖慢首屏。通常控制在3-5个preload以内,只preload首屏真正必需的关键资源。
第二,preconnect不要滥用。每个preconnect都会建立并维持一个TCP+TLS连接。Chrome限制每个页面最多6个preconnect,超过就会被忽略。只给最重要的1-2个第三方域名设preconnect(如Google Fonts或CDN),其余用dns-prefetch就够了。
第三,缓存预热(Cache Preload)和页面预取(Page Prefetch)是两回事。WP Rocket和LiteSpeed Cache的Preload标签做的是缓存预热——自动访问sitemap里的页面让服务器生成静态缓存,这跟浏览器的prefetch没有关系。Flying Pages和Speculation Rules做的才是浏览器端的页面预取。两个可以同时开,但不要混为一谈。
说到底,预加载这件事的本质是用带宽换时间。对于一个日IP几百的个人博客,Flying Pages免费装上就能让页面跳转从1.5秒变0.3秒,这比换服务器换CDN的性价比高得多。对于一个日IP几万的商业站,Perfmatters的精细preload配置能把Lighthouse分数从70拉到90+——这22分的差距,可能就是搜索结果页上第8名和第3名的差距。八个工具里,Flying Pages的零门槛自动预取、Perfmatters的通配符批量preload、Pre* Party的全类型覆盖,这三款加起来能覆盖99%的预加载需求,而且最贵的方案也就$24.95一年。
