• 欢迎访问奇跡の海网站,本站不上传任何资源,所有资源均来自于网络,欢迎加入奇跡の海~! QQ群
  • 本站下载资源为网络上收集整理而来,并且以计算机技术研究交流为目的,版权归原作者所有,仅供大家参考,学习,不存在任何商业目的与商业用途.
  • 本站系统镜像均来自于官方原版,ed2k可视为P2P下载链接。所有操作系统默认均为试用版,如有正版密钥可以有效激活,本站不提供任何激活和相关服务。

WordPress加速优化:DNS 预获取(DNS Prefetching)

WP其他 奇跡の海 2年前 (2017-04-21) 257次浏览 已收录 0个评论 扫描二维码

今天小 V 在逛免费资源部落时无意中发现部落的网站头部加上了一段以前从来没见过的代码,下面是当时免费资源部落的头部代码截图:

WordPress 加速优化:DNS 预获取(DNS Prefetching)

小 V 以前也没见过 dns prefetch 这类标签,dns prefetch 翻译成中文大概是 dns 预取、dns 预读的意思(PS:小 V 英语烂~翻译的大概意思就是这样)。当时小 V 就觉得很奇怪了这类标签怎么没听说过啊,正好没事小 V 就去请教一下谷歌老师。谷老师立即丢出一条链接来:Controlling DNS prefetching 链接是 Firefox 官方文档的,绝对权威。文档的中说的 dns prefetch 标签是在读取一个网站页面时,把规定好的几个域名的 dns 事先都解析好,从而达到给网站加速的效果。好了既然了解 dns prefetch 标签的作用,那么骚年还等什么动手吧!给自己的网站加上一个。

那么下面小 V 来教大家如何让 wordpress 支持 dns prefetch 标签。

function v7v3_dns_prefetch() {
<meta http-equiv="x-dns-prefetch-control" content="on" />
<link rel="dns-prefetch" href="//bdimg.share.baidu.com/" />
<link rel="dns-prefetch" href="//api.share.baidu.com/" />
<link rel="dns-prefetch" href="//hm.baidu.com/" />
<link rel="dns-prefetch" href="//0.gravatar.com/" />
<link rel="dns-prefetch" href="//1.gravatar.com/" />
}
add_action( 'wp_head', 'v7v3_dns_prefetch');

在 wordpress 主题的 functions.php 文件中加上以上代码后 wordpress 就会自动在头部载入 dns prefetch 标签,当然这个前提是你的主题加载了 wp_head()钩子。不过以上代码是全局载入的,也就是说在每个页面都会载入这段代码,如果每个页面都设置了 dns 预取域名的话则每个页面都要对设置中的域名做一次预取操作这样一来预取标签就相当于没有用了,那么如何只让首页加载 dns 预取标签呢?其实我们可以给代码加上个判断,即可。

function v7v3_dns_prefetch() {
wp_reset_query(); if(is_home()){?>
<meta http-equiv="x-dns-prefetch-control" content="on" />
<link rel="dns-prefetch" href="//bdimg.share.baidu.com/" />
<link rel="dns-prefetch" href="//api.share.baidu.com/" />
<link rel="dns-prefetch" href="//hm.baidu.com/" />
<link rel="dns-prefetch" href="//0.gravatar.com/" />
<link rel="dns-prefetch" href="//1.gravatar.com/" />
<?php                                }
}
add_action( 'wp_head', 'v7v3_dns_prefetch');

但是如果只在网站首页显示 dns 预取标签的话,入口页面不在首页的访客就感觉不到 dns 预取的加速效果了,其实我们可以给访客的浏览器写入一个 cookies 来判断访客是否为第一访问网站,如果是第一次访问则在入口页面输出 dns 预取标签,那么 wordpress 如何来写入 cookie 呢?小 V 之前曾经写过一篇 wordpress 写入 cookie 的教程《wordpress 二次开发教程手记:写入 cookie 记录访客行为》,我们再将两篇文章的代码结合起来使用,首先在 functions.php 文件中加上以下代码:

function set_newuser_cookie() {
if (!isset($_COOKIE['v7v3_cookie'])) {
setcookie('v7v3_cookie', 1, time()+1209600, COOKIEPATH, COOKIE_DOMAIN, false);
}
}
add_action('after_setup_theme', 'set_newuser_cookie');

然后在主题文件夹下新建一个 dns.php 文件并加入以下代码:

<?php
if (is_home()) { //判断当前页面是否为首页
echo '
<meta http-equiv="x-dns-prefetch-control" content="on" /> //开启 dns 预取
<link rel="dns-prefetch" href="//bdimg.share.baidu.com/" />
<link rel="dns-prefetch" href="//api.share.baidu.com/" />
<link rel="dns-prefetch" href="//hm.baidu.com/" />
<link rel="dns-prefetch" href="//0.gravatar.com/" />
<link rel="dns-prefetch" href="//1.gravatar.com/" />
';
}elseif (isset($_COOKIE['v7v3_cookie'])) { //判断是否为初次访问
echo '<meta name="author" content="WordPress Dns Prefetch Is By NaiZui" />
';
}
else        {
echo '
<meta http-equiv="x-dns-prefetch-control" content="on" />
<link rel="dns-prefetch" href="//bdimg.share.baidu.com/" />
<link rel="dns-prefetch" href="//api.share.baidu.com/" />
<link rel="dns-prefetch" href="//hm.baidu.com/" />
<link rel="dns-prefetch" href="//0.gravatar.com/" />
<link rel="dns-prefetch" href="//1.gravatar.com/" />
';
}
?>

然后在主题的 header.php 文件的</head>标签之前加入以下代码:

<?php include TEMPLATEPATH. '/dns.php'; ?>

好了这样一来 wordpress 将只在首页和访客初次访问的时候显示 dns 预取标签了(PS:预取域名可以按照自己网站的具体需求去设置)。另外再说下,大家搞网站都不容易,有时候心血来潮花个几个小时写原创也不容易吧?某些人转载留个链接你也不损失什么是吧?你觉得被人家鄙视好还是留个链接好呢?

转自:http://www.v7v3.com/wpjiaocheng/201308250.html


版权声明:本站所有文章和资源使用BY-NC-SA协议授权发布 , 转载应当以相同方式注明文章来自“SeaOMC.COM->WordPress 加速优化:DNS 预获取(DNS Prefetching)!在下边可以分享本文哦!
本文最后更新于2018年3月14日,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
喜欢 (0)
[]
分享 (0)
奇跡の海
关于作者:
一个WordPress菜鸟!
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址