WordPress如何禁止头部加载“s.w.org”

敖游
2025-08-20
来源:遨游建站

WordPress 4.6 版本加载了一个 DNS-Prefetch(DNS 预解析)功能,通过 DNS 预解析来告诉浏览器未来我们可能从某个特定的 URL 获取资源,当浏览器真正使用到该域中的某个资源时就可以尽快地完成 DNS 解析。


什么是dns-prefetch


什么是dns-prefetch.jpeg

DNS Prefetch 是一种 DNS 预解析技术。当你浏览网页时,浏览器会在加载网页时对网页中的域名进行解析缓存,这样在你单击当前网页中的连接时就无需进行 DNS 的解析,减少用户等待时间,提高用户体验。

目前每次DNS解析,通常在200ms以下。针对DNS解析耗时问题,一些浏览器通过DNS Prefetch 来提高访问的流畅性。

在网站速度优化中,dns-prefetch对网页预获取,在提高大型网站浏览速度方面有帮助。但是在wordpress中的s.w.org指向的是wordpress的国外官方网站,这对于我们来说毫无用处。

WordPress 默认使用 s.w.org 下的图片来渲染 emoji 表情,所以在 WordPress 头部也有 s.w.org 的DNS 解析。


升级到 WordPress 4.6 之后,有童鞋发现头部加载了一段代码:


<link rel=‘dns-prefetch’ href=‘//s.w.org’>


WordPress在头部添加dns-prefetch,应该是为了从s.w.org预获取表情和头像,目的是提高网页加载速度 ,但s.w.org国内根本无法访问,什么预获取、什么提高速度,都是泡影,不仅没用处,反而可能会影响速度,那就禁止它。


如何去除dns-prefetch


将脚本添加到当前WP程序主题中的functions.php文件中,然后再去刷新网站前端,问题可以解决。


1、在主题function.php文件中屏蔽


remove_action( ‘wp_head’, ‘wp_resource_hints’, 2 );


2、或者下面这种改造过的方法,兼容性会好点


function remove_dns_prefetch( $hints, $relation_type ) {

if ( 'dns-prefetch' === $relation_type ) {

return array_diff( wp_dependencies_unique_hosts(), $hints );

}

return $hints;

}

add_filter( 'wp_resource_hints', 'remove_dns_prefetch', 10, 2 );


直接在文件去除相关函数,/wp-includes/general-template.php大概2903行全部注释。


//      foreach ( $urls as $key => $url ) {

//          $atts = array();

//

//          if ( is_array( $url ) ) {

//              if ( isset( $url['href'] ) ) {

//                  $atts = $url;

//                  $url   = $url['href'];

//              } else {

//                  continue;

//              }

//          }

//

//          $url = esc_url( $url, array( 'http', 'https' ) );

//

//          if ( ! $url ) {

//              continue;

//          }

//

//          if ( isset( $unique_urls[ $url ] ) ) {

//              continue;

//          }

//

//          if ( in_array( $relation_type, array( 'preconnect', 'dns-prefetch' ) ) ) {

//              $parsed = wp_parse_url( $url );

//

//              if ( empty( $parsed['host'] ) ) {

//                  continue;

//              }

//

//              if ( 'preconnect' === $relation_type && ! empty( $parsed['scheme'] ) ) {

//                  $url = $parsed['scheme'] . '://' . $parsed['host'];

//              } else {

//                  // Use protocol-relative URLs for dns-prefetch or if scheme is missing.

//                  $url = '//' . $parsed['host'];

//              }

//          }

//

//          $atts['rel'] = $relation_type;

//          $atts['href'] = $url;

//

//          $unique_urls[ $url ] = $atts;

//      }



延伸阅读


WordPress始于2003年,当时迈克·利特尔和马特·莫楞威格创建了b2/cafelog。WordPress是使用PHP语言开发的开源发布平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的博客、网站。也可以把WordPress当作一个内容管理系统(CMS)来使用。

WordPress有许多第三方开发的免费模板,安装方式简单易用。不过要做一个自己的模板,则需要有一定的专业知识。比如至少要懂的标准通用标记语言下的一个应用HTML代码、CSS、PHP等相关知识。

WordPress官方支持中文版,同时有爱好者开发的第三方中文语言包,如wopus中文语言包。WordPress拥有成千上万个各式插件和不计其数的主题模板样式。


阅读6
分享
写评论...