中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Web前端性能優(yōu)化教程06:減少DNS查找、避免重定向

2019-03-26    來源:teroy博客園

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

本文是Web前端性能優(yōu)化系列文章中的第六篇,主要講述內(nèi)容:減少DNS查找、避免重定向。完整教程可查看:Web前端性能優(yōu)化

一、減少DNS查找

基礎(chǔ)知識

DNS(Domain Name System): 負責將域名URL轉(zhuǎn)化為服務(wù)器主機IP。

DNS查找流程:首先查看瀏覽器緩存是否存在,不存在則訪問本機DNS緩存,再不存在則訪問本地DNS服務(wù)器。所以DNS也是開銷,通常瀏覽器查找一個給定URL的IP地址要花費20-120ms,在DNS查找完成前,瀏覽器不能從host那里下載任何東西。

TTL(Time To Live):表示查找返回的DNS記錄包含的一個存活時間,過期則這個DNS記錄將被拋棄。

影響DNS緩存的因素

1. 服務(wù)器可以設(shè)置TTL值表示DNS記錄的存活時間。本機DNS緩存將根據(jù)這個TTL值判斷DNS記錄什么時候被拋棄,這個TTL值一般都不會設(shè)置很大,主要是考慮到快速故障轉(zhuǎn)移的問題。

2. 瀏覽器DNS緩存也有自己的過期時間,這個時間是獨立于本機DNS緩存的,相對也比較短,例如chrome只有1分鐘左右。

3. 瀏覽器DNS記錄的數(shù)量也有限制,如果短時間內(nèi)訪問了大量不同域名的網(wǎng)站,則較早的DNS記錄將被拋棄,必須重新查找。不過即使瀏覽器丟棄了DNS記錄,操作系統(tǒng)的DNS緩存也有很大機率保留著該記錄,這樣可以避免通過網(wǎng)絡(luò)查詢而帶來的延遲。

最佳實踐

當客戶端的DNS緩存為空時,DNS查找的數(shù)量與Web頁面中唯一主機名的數(shù)量相等。所以減少唯一主機名的數(shù)量就可以減少DNS查找的數(shù)量。

然而減少唯一主機名的數(shù)量會潛在地減少頁面中并行下載的數(shù)量,避免DNS查找降低了響應(yīng)時間,但減少并行下載可能會增加響應(yīng)時間。當頁面的組件量比較多的時候,可以考慮將組件分別放到至少2-4個主機名,已獲得最大收益。

延伸閱讀:

  • CloudXNS免費DNS服務(wù):線路細分 宕機監(jiān)控等
  • 減少域名DNS解析時間將網(wǎng)頁加載速度提升新層次
  • 盤點十大免費DNS域名解析服務(wù):穩(wěn)定、可靠
  • 國內(nèi)免費DNS服務(wù)使用評測:360DNS、ZnDNS等

二、避免重定向

什么是重定向?

重定向用于將用戶從一個URL重新路由到另一個URL。

常用重定向的類型

301:永久重定向,主要用于當網(wǎng)站的域名發(fā)生變更之后,告訴搜索引擎域名已經(jīng)變更了,應(yīng)該把舊域名的的數(shù)據(jù)和鏈接數(shù)轉(zhuǎn)移到新域名下,從而不會讓網(wǎng)站的排名因域名變更而受到影響。

302:臨時重定向,主要實現(xiàn)post請求后告知瀏覽器轉(zhuǎn)移到新的URL。

304:Not Modified,主要用于當瀏覽器在其緩存中保留了組件的一個副本,同時組件已經(jīng)過期了,這是瀏覽器就會生成一個條件GET請求,如果服務(wù)器的組件并沒有修改過,則會返回304狀態(tài)碼,同時不攜帶主體,告知瀏覽器可以重用這個副本,減少響應(yīng)大小。

重定向如何損傷性能?

當頁面發(fā)生了重定向,就會延遲整個HTML文檔的傳輸。在HTML文檔到達之前,頁面中不會呈現(xiàn)任何東西,也沒有任何組件會被下載。

來看一個實際例子:對于ASP.NET webform開發(fā)來說,對于新手很容易犯一個錯誤,就是把頁面的連接寫成服務(wù)器控件后臺代碼里,例如用一個Button控件,在它的后臺click事件中寫上:Response.Redirect("");然而這個Button的作用只是轉(zhuǎn)移URL,這是非常低效的做法,因為點擊Button后,先發(fā)送一個Post請求給服務(wù)器,服務(wù)器處理Response.Redirect("")后就發(fā)送一個302響應(yīng)給瀏覽器,瀏覽器再根據(jù)響應(yīng)的URL發(fā)送GET請求。正確的做法應(yīng)該是在html頁面直接使用a標簽做鏈接,這樣就避免了多余的post和重定向。

重定向的應(yīng)用場景

1. 跟蹤內(nèi)部流量

當擁有一個門戶主頁的時候,同時想對用戶離開主頁后的流量進行跟蹤,這時可以使用重定向。以yahoo.com為例,主頁新聞的鏈接主機名是http://hsrd.yahoo.com/,后面跟著識別的參數(shù),點擊后再產(chǎn)生一個301重定向,這樣就記錄了離開門戶主頁后的流量去向! 

我們知道重定向是如何損傷性能的,為了實現(xiàn)更好的效率,可以使用Referer日志來跟蹤內(nèi)部流量去向。每個HTTP請求都有一個Referer表示原始請求頁(除了從書簽打開或直接鍵入URL等操作),記錄下每個請求的Referer,就避免了向用戶發(fā)送重定向,從而改善了響應(yīng)時間。

2. 跟蹤出站流量

有時鏈接可能將用戶帶離你的網(wǎng)站,在這種情況下,使用Referer就不太現(xiàn)實了。

同樣也可以使用重定向來解決跟蹤出站流量問題。以百度搜索為例,百度通過將每個鏈接包裝到一個302重定向來解決跟蹤的問題,例如搜索關(guān)鍵字“跟蹤出站流量”,搜索結(jié)果的第一個URL為http://www.baidu.com/link?url=后面跟著一連串字符,即使搜索結(jié)果并沒有變,但這個字符串是動態(tài)改變的,我認為這里的搜索連接URL好像沒有改變的需要,不知道這里起到怎樣的作用?

除了重定向外,我們還可以選擇使用信標(beacon)——一個HTTP請求,其URL中包含有跟蹤信息。跟蹤信息可以從信標Web服務(wù)器的訪問日記中提取出來,信標通常是一個1px*1px的透明圖片,不過204響應(yīng)更優(yōu)秀,因為它更小,從來不被緩存,而且絕不會改變?yōu)g覽器的狀態(tài)。

延伸閱讀:

  • 301跳轉(zhuǎn)常見問題匯總
  • 寫給新手站長:301重定向完整解析
  • 再談Canonical標簽:與301有何區(qū)別?

標簽: Web前端性能優(yōu)化 Web前端性能優(yōu)化教程 DNS查找 

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:網(wǎng)站分頁導航對用戶體驗和優(yōu)化的影響幾何?

下一篇:Wordpress站點SEO優(yōu)化教程三:標題、URL優(yōu)化