问题:
WordPress页面中的: <script type=”speculationrules”> {“prefetch”:[{“source”:”document”,”where”:{“and”:[{“href_matches”:”/*”},{“not”:{“href_matches”:[“/wp-*.php”,”/wp-admin/*”,”/myitems/*”,”/wp-content/*”,”/wp-content/plugins/*”,”/wp-content/themes/qianv10/*”,”/*\?(.+)”]}},{“not”:{“selector_matches”:”a[rel~=”nofollow”]”}},{“not”:{“selector_matches”:”.no-prefetch, .no-prefetch a”}}]},”eagerness”:”conservative”}]} </script>
这段代码的作用是什么?如何删除?
你提供的这段代码是 WordPress 中使用的 Speculation Rules API 规范,主要用于性能优化,它会根据预设规则在浏览器空闲时预取页面内容。下面我会详细解释它的作用,以及如何删除或调整它。
📊 Speculation Rules API 预取配置概述
| 配置项 | 设置值 | 说明 |
|---|---|---|
| 模式 (mode) | prefetch | 仅预取HTML文档,不预先加载文档中的其他资源(如JS、CSS、图片) |
| 规则来源 (source) | document | 从当前文档中寻找链接 |
| 积极性 (eagerness) | conservative (保守) | 仅在用户很可能要导航时(例如开始点击链接时)才进行预取 |
| 排除规则 | 特定路径、nofollow 链接、.no-prefetch 类 | 避免预取后台、插件、主题等无关路径或特殊标记的链接 |
🔍 代码详细作用
这段代码的核心作用是提升网站浏览体验。它通过预取(Prefetch)用户可能点击的页面HTML内容,让后续页面加载速度更快,感觉“秒开”。
代码中的 speculationrules 脚本块定义了浏览器应如何预取页面:
"prefetch":表示此规则用于预取。它只会预先下载目标页面的HTML资源,而不会像prerender那样预先加载该页面所有资源并在后台渲染整个页面。"source": "document":告诉浏览器从当前页面的所有链接中查找需要预取的URL。"where":这是一个条件对象,包含了哪些链接应该被预取,哪些应该被排除的规则。这里的规则是:{"href_matches": "/*"}: 匹配当前域名下的所有链接。{"not": {"href_matches": ["/wp-*.php", ...}}: 排除一系列特定的路径。这些路径通常对应WordPress的后台管理目录 (wp-admin)、插件目录 (wp-content/plugins)、主题目录 (wp-content/themes/qianv10/*)、以及一些特殊功能路径 (/myitems/*)。这很重要,避免了去预取用户根本不会访问的管理员或脚本链接,节省带宽。{"not": {"selector_matches": "a[rel~="nofollow"]"}}: 排除所有带有rel="nofollow"属性的链接。这通常是评论中的外部链接或广告链接,用户点击概率相对较低。{"not": {"selector_matches": ".no-prefetch, .no-prefetch a"}}: 排除任何带有no-prefetchCSS类的元素及其内部的链接。这是给主题或插件开发者的一个钩子,方便他们在需要时阻止特定链接的预取。
"eagerness": "conservative":定义了预触发的积极性级别。conservative(保守)意味着浏览器只会在用户很可能要导航时(例如,鼠标开始点击链接的那一刻)才进行预取。这有助于平衡性能提升和资源消耗。
🗑️ 如何删除或禁用此代码
删除这段代码通常不会影响网站功能的正常运行,但可能会让后续页面的加载速度回到未优化前的状态。你可以根据它被添加的方式选择删除方法:
方法一:停用相关插件(最可能、最简单的方式)
这段代码很可能是由优化类插件添加的。请检查你的WordPress插件列表,寻找例如 “Flying Pages”、“Speculative Loading”、“WP Instant Links”、“Quicklink for WordPress” 或其他性能优化、预加载插件。
操作步骤:
- 进入WordPress后台 → “插件” → “已安装插件”。
- 逐个暂停这些优化插件,然后刷新网站前台页面。
- 查看页面源代码,检查该代码块是否消失,从而确认是哪个插件添加的。
- 确认后,你可以直接停用并删除该插件,或者在插件设置中寻找关闭“预取”或“推测性加载”功能的选项。
方法二:检查主题设置或文件
某些WordPress主题可能会集成性能优化功能。
操作步骤:
- 进入WordPress后台 → “外观” → “主题编辑器”(操作前建议备份)。
- 或者通过FTP/SFTP连接到你的网站服务器,检查当前使用的主题文件夹 (例如
/wp-content/themes/your-theme/)。 - 查看主题的
functions.php文件或其他可能的JavaScript文件,寻找包含speculationrules的代码段。 - 如果找到,可以注释掉(在最前面加
//或/*和*/包围) 或删除相关的代码。
方法三:使用功能过滤移除(针对代码直接集成)
如果这段代码是直接通过主题的 functions.php 文件添加的,你可能需要同样在该文件中添加过滤函数来移除它。WordPress本身可能提供了相应的过滤钩子。
操作步骤:
- 打开你当前主题的
functions.php文件(建议使用子主题进行操作,避免主题更新后修改丢失)。 - 尝试添加以下代码并保存:
// 移除Speculation Rules API预取规则
function remove_speculation_rules() {
remove_action( 'wp_head', 'function_that_outputs_speculation_rules' );
// 需要替换为实际输出该代码的函数名
}
add_action( 'init', 'remove_speculation_rules' );注意:上面的代码需要你知道输出这些规则的具体函数名(function_that_outputs_speculation_rules)才能生效,这通常需要查看插件或主题的源代码。如果不知道,此方法可能无效。
方法四:对于WordPress 6.8及以上核心版本
从WordPress 6.8版本开始,核心已集成推测性加载(Speculative Loading) 功能。如果你的网站升级到了6.8或更高版本,此功能可能默认启用。
操作步骤:
- 进入WordPress后台 → “设置” → “阅读”。
- 滚动到页面底部,寻找 “Speculative Loading” 设置区域。
- 将选项调整为 “Disabled”(禁用)并保存更改。
⚠️ 注意事项
- 删除的影响:移除这段代码最直接的影响是浏览器不会再预取页面,这可能会略微增加用户点击链接后看到页面的等待时间,但可以节省服务器资源和用户带宽。
- 必要性:通常不建议预取后台 (
wp-admin)、插件或主题文件路径,你的排除列表是合理的。如果你觉得预取功能用处不大,或想减少服务器负载,可以删除。 - 优先级:在修改任何文件之前,优先检查插件和主题设置,这是最安全快捷的方式。
📌 总结
这段 speculationrules 代码是WordPress中用于预取用户可能点击的页面HTML内容以提高浏览体验的脚本。要删除它,最可能的方法是停用相关的性能优化插件,或检查主题设置及文件。对于WordPress 6.8及以上版本,还可以在“设置”→“阅读”中禁用集成的推测性加载功能。
希望这些信息能帮助你解决问题!

