• 歡迎訪問奇跡の海網站,本站不上傳任何資源,所有資源均來自于網絡,歡迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下載資源為網絡上收集整理而來,并且以計算機技術研究交流為目的,版權歸原作者所有,僅供大家參考,學習,不存在任何商業目的與商業用途.
  • 本站系統鏡像均來自于官方原版,ed2k可視為P2P下載鏈接。所有操作系統默認均為試用版,如有正版密鑰可以有效激活,本站不提供任何激活和相關服務。

WordPress加速優化:DNS 預獲取(DNS Prefetching)

WP其他 奇跡の海 2年前 (2017-04-21) 515次瀏覽 已收錄 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="//#/" />
<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="//#/" />
<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="//#/" />
<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="//#/" />
<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


版權聲明:本站所有文章和資源使用CC BY-NC-SA 4.0協議授權發布 , 轉載應當以相同方式注明文章來自“SeaOMC.COM->WordPress加速優化:DNS 預獲取(DNS Prefetching)!在下邊可以分享本文哦!
喜歡 (0)
[]
分享 (0)
奇跡の海
關于作者:
一個WordPress菜鳥!
發表我的評論
取消評論

表情 貼圖 加粗 刪除線 居中 斜體 簽到

Hi,您需要填寫昵稱和郵箱!

  • 昵稱 (必填)
  • 郵箱 (必填)
  • 網址
中国福利彩票36选7开奖结果