新聞中心

您可以對WordPress進行許多不同的優(yōu)化,其中一些比其他優(yōu)化更重要。一個經(jīng)常被忽視的因素是與DNS相關(guān)的查找時間,以及它對您網(wǎng)站的影響有多大。就像TTFB和網(wǎng)絡(luò)延遲一樣,在計算總頁面加載時間時,這是一個重要的難題。
所以今天我們將深入探討一些關(guān)于如何減少DNS查找并加快它們的速度、為什么應(yīng)該這樣做以及它如何在WordPress網(wǎng)站的性能中發(fā)揮作用的建議。
什么是DNS Lookup?
要向您展示什么是DNS Lookup,您首先需要了解DNS的工作原理。DNS(域名系統(tǒng))本質(zhì)上是互聯(lián)網(wǎng)的支柱。解釋DNS如何工作的一個常見參考是將其視為萬維網(wǎng)的電話簿。您訪問的每個網(wǎng)站和域都映射到一個IP地址。
當(dāng)您在地址欄中鍵入Google.com時,您的ISP會執(zhí)行DNS查詢以請求與域關(guān)聯(lián)的名稱服務(wù)器。然后由服務(wù)器在后臺完成到IP地址的映射,然后您就可以使用域名來訪問它。如果沒有DNS,您將必須輸入類似216.58.217.206的內(nèi)容才能訪問Google。那不是很好玩嗎!
DNS的工作原理
當(dāng)您瀏覽網(wǎng)站時,必須在下載任何內(nèi)容之前為請求的每個域進行DNS查找。但是,不必對每個資源都執(zhí)行DNS查找。例如,假設(shè)我們有以下HTTP請求:
https://wpdev.ink/ https://js.stripe.com/v3/ https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/images/header.jpg https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/skip-link-focus-fix.js https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/global.js https://cdn.wpdev.ink/wp-content/themes/twentyseventeen/assets/js/jquery.scrollTo.js https://cdn.wpdev.ink/fonts/open-sans-v13-latin-regular.woff2 https://cdn.wpdev.ink/fonts/open-sans-v13-latin-700.woff2
盡管上面總共有八個HTTP請求,但總共只有三個唯一域。這意味著有三個DNS查找。
https://wpdev.ink https://js.stripe.com https://cdn.wpdev.ink
Pingdom中的DNS查找
以下是上述請求在Pingdom網(wǎng)站速度測試工具中的顯示方式。DNS表示為粉紅色條,以毫秒為單位。當(dāng)您第一次通過Pingdom運行您的網(wǎng)站時,它會執(zhí)行新的查找,并且必須查詢每個域的DNS記錄以獲取IP信息。請注意,它不必在cdn.wpdev.ink域上多次查詢DNS。這就是DNS的工作原理。它只需要查詢一個域一次。所以下面總共有8個請求,但只有3個DNS查找。
此DNS查找會導(dǎo)致額外的加載時間,因為在DNS查找完成之前無法加載任何內(nèi)容。請注意,在一個CDN URL上的DNS查找耗時超過300毫秒。這不包括在wpdev.ink或js.stripe.com上的查找。所以你可以看到這會如何隨著時間的推移而累加。
Pingdom中的DNS查找
當(dāng)您通過Pingdom多次運行您的網(wǎng)站時,它會緩存DNS,因為它已經(jīng)知道IP信息并且不必再次執(zhí)行查找。這就是為什么您的網(wǎng)站在通過Pingdom多次運行后顯示速度更快的原因之一。正如您在下面的屏幕中看到的,在第二個測試中,CDN URL上的DNS查找時間為0毫秒。這是很多人誤解的一個領(lǐng)域。但別擔(dān)心,我們將在下面深入研究DNS緩存。
Pingdom中的DNS緩存
GTmetrix中的DNS查找
每個網(wǎng)站速度測試工具的工作方式略有不同,但幾乎所有工具都會為您計算DNS查找時間。以下是相同請求在GTmetrix中的顯示方式。DNS用綠色條表示,以毫秒為單位。
GTmetrix中的DNS查找
WebPagetest中的DNS查找
這是一個使用WebPageTest的示例。他們實際上對您的請求詳細信息有一個快速概覽,您可以在其中單擊“DNS查找”列并按最高響應(yīng)時間對其進行排序。我們以通過該工具運行usatoday.com為例,僅DNS查找時間就花了6.5秒!
由于所有的外部請求,許多這些新聞網(wǎng)站沒有被高度優(yōu)化是很常見的。但是正如您所看到的,他們站點上的DNS查找時間可能比大多數(shù)人的整個站點花費的時間更長。這就是DNS很重要的原因。
較長的DNS查找時間(網(wǎng)頁測試)
如何減少和加速DNS查找
既然您對DNS的工作原理有了更多的了解,我們將向您展示一些關(guān)于如何減少DNS查找并在您的WordPress站點上加快查找速度的建議。在某些網(wǎng)站速度測試工具中,這有時也稱為“最小化DNS查找”。
最小化Pingdom中的DNS查找
技巧 1 – 使用快速DNS提供商
重要的是要了解,就像托管一樣,有越來越快的DNS提供商。這應(yīng)該是您修復(fù)的第一件事。
通常,GoDaddy和Namecheap等域注冊商提供的免費DNS速度非常慢。DNS提供商通常像CDN一樣工作,他們在全球擁有多個POP。大型DNS提供商,如Amazon、Cloudflare、Dyn和DNS Made Easy,都擁有專門為具有低延遲環(huán)境的DNS設(shè)計的龐大基礎(chǔ)設(shè)施。
我們進行了一些測試來比較一些流行的DNS提供商的速度。我們使用了KeyCDN的性能工具以及SolveDNS的速度測試,取了平均值。速度是從全球多個地點測量的。如您所見,除了Cloudflare,免費DNS提供商的速度肯定較慢。這就是為什么如果您認真對待您的業(yè)務(wù)和網(wǎng)站,我們強烈建議您使用優(yōu)質(zhì)DNS提供商。
DNS提供商速度
上述某些提供商在某些地區(qū)也比其他提供商更快,因此確定您需要快速DNS查找時間的區(qū)域(區(qū)域或全球)非常重要。 DNSPerf是另一種較新的DNS速度比較工具,您可以在選擇提供商時使用。您知道嗎,您也可以使用Cloudflare的DNS而無需其CDN功能?
技巧 2 – 更改TTL值以利用DNS緩存
值得慶幸的是,就像我們上面提到的,由于DNS緩存,您不必擔(dān)心在每個頁面加載時都會發(fā)生查找。這真的是關(guān)于第一次請求。DNS緩存的工作方式與緩存WordPress站點的方式類似。DNS從緩存中提供,直到它過期(這是刷新DNS緩存的方法)。DNS緩存的長度由他們所謂的生存時間 (TTL) 值決定。TTL越高,瀏覽器執(zhí)行另一次DNS查找的可能性就越小。
可以通過您的域注冊商或第3方DNS提供商更改TTL值,以改善您的 DNS 緩存時間。需要注意的是,ISP也會緩存DNS。下面是一些常見的TTL值。
- 300 秒= 5 分鐘
- 1800 秒= 30 分鐘
- 3600 秒= 1 小時
- 43200 秒= 12 小時
- 86400 秒= 24 小時
Cloudflare TTL
30分鐘到一個小時通常是最常用的TTL值。但是,有些還將其TTL設(shè)置得非常低以允許快速更新。Cloudflare是一個示例,如果您使用其自動TTL,則默認為5分鐘。查看不同類型的DNS記錄并根據(jù)它們更改的頻率相應(yīng)地設(shè)置它們也很有用。下面是一個例子:
- A和AAAA記錄:更頻繁地更改,從5分鐘到一個小時通常都可以
- CNAME記錄:幾乎從不改變,更高的TTL(如24小時)通常是可以的
- NS記錄:幾乎從不改變,更高的TTL,如24小時通常是可以的
- MX記錄:不經(jīng)常更改,像12小時這樣的高TTL通常是可以的
- TXT記錄:不經(jīng)常更改,12小時之類的高TTL通常就可以了
對于TTL,確實沒有正確或錯誤的答案。但它可以通過選擇與您的站點上的更改頻率一致的TTL來改善您的DNS查找時間。
技巧 3 – 減少域(主機名)數(shù)量
減少站點上DNS查找的最簡單方法是簡單地刪除查詢不同主機名的請求。 請記住,DNS查找與請求數(shù)量無關(guān),而與不同域的數(shù)量有關(guān)。通過Pingdom之類的工具運行您的WordPress網(wǎng)站,并確定每個請求是否真的有必要。由于DNS是主機名到IP的映射,您可能想知道為什么人們不直接指向IP?這是因為IP地址可以頻繁更改,而主機名則不會。
技巧 4 – 使用具有更快DNS的替代服務(wù)
雖然簡單地減少域(主機名)的數(shù)量說起來容易做起來難,但我們建議首先查看那些具有更高 DNS 查找時間的域名。例如,在我們下面測試的這個站點中,我們可以很容易地發(fā)現(xiàn)Crazy Egg跟蹤腳本的DNS查找時間比其他站點長得多。這很可能是因為他們的DNS提供商不如其他提供商快。
查找較長的DNS查找時間
在這種情況下,您或許可以查看其他提供商,例如Hotjar,它們提供相同的服務(wù),但可能正在使用更快的DNS提供商。在向WordPress站點添加外部服務(wù)時,評估其性能非常重要。
技巧 5 – 在CDN上移動和托管資源
減少DNS查找的最簡單方法之一是將盡可能多的資源轉(zhuǎn)移到CDN提供商。如果您通過Pingdom運行您的站點,您可以按域查看請求總數(shù)。正如您在此示例中看到的,93.8%的請求都指向CDN URL。有一個請求給主機,一個請求給Google Analytics。通過將盡可能多的資源移動到CDN,這減少了涉及的DNS查找次數(shù),從而減少了加載時間。
按域請求
當(dāng)然,現(xiàn)在并不總是可以將所有內(nèi)容都移動到您的CDN??倳幸恍┩獠抠Y源或服務(wù)需要您從他們的服務(wù)器加載它們。但我們建議您瀏覽您的網(wǎng)站。很多時候,我們看到WordPress用戶有很多資源沒有正確托管在他們的CDN上。通過這樣做,您還可以更好地利用HTTP/2和并行化。以下是我們經(jīng)常看到的一些可以改進的資源:
Font Awesome
我們偶爾會在WordPress網(wǎng)站上看到插件開發(fā)人員和主題包括Font Awesome,但有時會以這樣的方式將它排入隊列,默認情況下,像CDN啟用程序這樣的插件將無法捕獲它。在這種情況下,我們建議與開發(fā)人員聯(lián)系,詢問他們?nèi)绾螐腃DN加載它。
Font Awesome的另一個常見情況是它有時從默認的BootstrapCDN (MaxCDN)加載。雖然這沒有任何問題,但它添加了另一個您不需要的DNS查找。在大多數(shù)情況下,從您自己的CDN加載Font Awesome會更好,這樣就不會再進行查找了。
Gravatar
如果您使用WordPress原生評論,您可能需要額外查找secure.gravatar.com以加載gravatars。一種簡單的解決方案是使用延遲加載評論插件。雖然這不會減少DNS查找,但會延遲它直到用戶向下滾動頁面。因此,從某種意義上說,您正在減少首頁加載時的DNS查找。請務(wù)必查看我們的博客文章,了解其他加快評論速度的方法。
谷歌字體
使用Google Fonts,您有一個額外的DNS請求來查找fonts.googleapis.com以獲取CSS文件。然后,您可以向fonts.gstatic.com發(fā)出其他請求以下載字體文件。當(dāng)您在本地托管所有請求時,所有請求都來自同一個域或CDN,并且很可能您不需要另一個CSS文件,因為它將在您的WordPress主題的CSS文件中。這樣做有利有弊,但請查看我們關(guān)于如何在本地托管字體的深入文章。
谷歌字體DNS查找
Font Awesome、Gravatars和Google Fonts只是通過確保它們從CDN加載來減少DNS查找的幾個示例。您目前是否正在從CDN加載所有可能的內(nèi)容?看看總是好的。
技巧 6 – 利用DNS預(yù)取
另一個加速DNS的技巧是使用DNS預(yù)取。這允許瀏覽器在后臺在頁面上執(zhí)行DNS查找。您可以通過在WordPress網(wǎng)站的Header中添加一些代碼行來實現(xiàn)。請參閱下面的一些示例。
除iOS Safari、Opera Mini和Android瀏覽器外,所有主要瀏覽器也支持DNS預(yù)取 。
DNS預(yù)取瀏覽器支持
或者,如果您運行的是WordPress 4.6或更高版本,您可能需要使用資源提示。開發(fā)人員可以使用wp_resource_hints過濾器為dns-prefetch、preconnect、prefetch或prerender添加自定義域和URL。
技巧 7 – 延遲JavaScript的加載
如果您推遲JavaScript的加載,這可以防止在文檔完全加載之前加載內(nèi)容。這不會減少所需的DNS查找次數(shù),但會阻止立即調(diào)用它們,從而可以加快用戶體驗。Varvy對如何延遲JavaScript有很好的解釋。他在他的網(wǎng)站上使用的一個例子是他的Google Analytics腳本,因為它沒有理由加載到首屏。
在WordPress中,您可以使用Async JavaScript等免費插件來延遲JavaScript的加載。但是,重要的是要知道您很可能必須瀏覽并列出您希望從延遲應(yīng)用中排除的任何腳本。為什么?因為需要一些JavaScript才能在首屏呈現(xiàn)。Async JavaScript也與Autooptimize插件完全兼容。
在WordPress中推遲JavaScript
請務(wù)必查看我們關(guān)于如何消除阻塞渲染的JavaScript和CSS的深入文章。
技巧 8 – 利用ANAME記錄和CNAME Flatten
還有來自DNS Made Easy和Cloudflare等提供商的額外記錄,可以幫助減少后端的請求數(shù)量。
使用DNS輕松記錄ANAME
ANAME記錄為您提供CNAME記錄的功能,但在根級別。例如,假設(shè)您為www.domain.com配置了CNAME。www必須首先解析為主機名,然后解析為IP地址。這需要兩個請求。使用ANAME記錄,您可以跳過這些請求之一!如果設(shè)置正確,這些也可以與CDN結(jié)合使用。
CNAME
ANSWER SECTION: www.domain.com. 1799 IN CNAME domain.com. domain.com. 1799 IN A 192.168.1.2
ANAME
ANSWER SECTION: www.domain.com. 1799 IN A 192.168.1.2
然而,這并不總是正確的。如果主機名在同一DNS區(qū)域中,則可能會在同一請求中檢索A記錄。
使用Cloudflare的CNAME Flattening
與ANAME記錄類似,Cloudflare在區(qū)域頂點(或根)為其客戶提供自動CNAME Flattening。
小結(jié)
DNS通常是那些被忽視的性能因素之一,但如果您不小心,它很容易占整個加載時間的很大一部分。了解DNS的工作原理很重要,那里有越來越快的提供商,以及如何減少查找以加快站點速度。
新聞名稱:如何減少DNS查找數(shù)量及提升查詢速度
文章來源:http://m.fisionsoft.com.cn/article/dhgsjie.html


咨詢
建站咨詢
