轉載請註明出處:葡萄城官網,葡萄城爲開發者提供專業的開發工具、解決方案和服務,賦能開發者。
原文出處:https://blog.bitsrc.io/5-common-mistakes-developers-do-that-affect-page-load-time-5a49b0e46f6bjavascript
若是您的網站在用戶訪問時的加載時間須要好久,那麼,這篇文章興許能爲您的優化工做帶來一些啓發。不過即使沒能幫您解決你的問題,您也能瞭解到影響了網站加載時間的幾種常見錯誤是什麼。java
頁面的加載時間直接影響到了用戶對網站性能的直觀感覺。有調研數據表示,瀏覽器
一旦頁面加載時長超過3秒,那麼將會有一半的訪問用戶在等待中而流失。緩存
讓咱們看看幾個基於HubSpot所作研究的示例:服務器
根據上面的數據,您能夠看出頁面加載時間對您的網站有多麼重要。網絡
影響頁面加載時間的因素不少,在這些錯誤中,我列出了我在創建網站時遇到的比較有表明性的五大錯誤。併發
每當瀏覽器須要從Web服務器獲取文件、頁面或圖像時,都會發出一次HTTP請求,以後您能夠經過Chrome「開發人員工具」中的「Network」選項卡去監測應用程序是發出了哪些網絡請求,哪些請求比較耗時等信息。app
通常瀏覽器一般將同時發出的HTTP請求數限制在4-8個之間。所以,當併發請求數量較多時,會產生較長的等待延遲。Yahoo所作的研究代表,您的應用程序加載時間的80%依賴於HTTP請求。減小HTTP請求的數量會增長頁面加載時間。負載均衡
您能夠經過下面的方式來減小Web應用的HTTP請求總量:dom
若是您的網站沒有啓用CDN,則當用戶的物理位置遠離服務器時,加載時間會增長。這些延遲會隨着距離的增長而變得更明顯,而且會影響到對服務器的全部HTTP請求。使用CDN能夠縮短頁面加載時間。
CDN是什麼?
CDN的全稱是Content Delivery Network,即內容分發網絡。CDN是構建在網絡之上的內容分發網絡,依靠部署在各地的邊緣服務器,經過中心平臺的負載均衡、內容分發、調度等功能模塊,使用戶能夠就近獲取所需內容。
使用CDN將使用戶可以從距離其位置最近的服務器獲取網頁所需的資源。CDN中的服務器分佈在不一樣的地理位置。因此使用這種CDN是改善應用程序加載時間的有效方法之一。
例如,若是您的Web服務器位於加利福尼亞州,若是您部署了CDN,您的訪客訪問網絡拓補圖多是下面的樣子。
大多數CDN服務都擁有本身的網絡骨幹,與互聯網相比,它們能夠提供更高的服務質量,更少的數據包率及更快的加載速度等有點。缺點,就是貴。
從Web服務器上加載大尺寸文件或加載頁面尺寸較大時將耗費大量時間,因此可能會在爲了獲取幾個這樣大的文件而使頁面加載時間變長。
經過啓用壓縮是減少HTTP請求文件大小、縮短頁面加載時間的經常使用方式。
常見的壓縮方式有兩種:
第一種方式是Gzip,Gzip能夠定位文件中的相似代碼,並暫時替換它們,使文件變小。目前,大多數Web服務器都支持Gzip壓縮。對HTML或CSS文件啓用壓縮一般能夠節省約50%或70%的文件大小,從而減小頁面加載時間和使用的帶寬。您能夠經過減少應用程序中使用的圖像的大小來進一步減小頁面加載時間。
另外一種壓縮方案稱爲Brotli,據官方介紹壓縮比較gzip要高20%~30%,而且執行效率更高效,具體的由於我這沒有測試,因此沒法佐證,您能夠根據您的實際狀況來考慮。
同時加載全部HTML、CSS和JS文件將增長頁面加載時間,由於在加載全部這些資源以前,頁面渲染的流程將被阻止。
延遲JavaScript加載是一種在加載其餘元素以後加載大型JS文件的機制。此方法可確保加載頁面內容時不會因加載大型JS文件而受到影響。
若是您有一個HTML站點,則須要在</body>標記以前調用外部JS文件(defer.js)。
<script type="text/javascript"> function downloadJSAtOnload() { var element = document.createElement("script"); element.src = "defer.js"; document.body.appendChild(element); } if (window.addEventListener) window.addEventListener("load", downloadJSAtOnload, false); else if (window.attachEvent) window.attachEvent("onload", downloadJSAtOnload); else
window.onload = downloadJSAtOnload; </script>
上面的代碼是講,「等待整個文檔加載,而後再加載外部defer.js文件。」
通常狀況下,咱們使用重定向來處理移動或刪除的頁面,以免用戶訪問時出現錯誤。可是,更多的重定向意味着更多的HTTP請求。這會極大地增長頁面加載時間。谷歌建議網站全部者取消重定向,以縮短加載時間,特別是在移動優先的網站上。
您可使用相似網站爬取工具來得到網站中的全部重定向請求。經過分析這一點,您能夠掌握並清除其中沒必要要的重定向。
通常,重定向分爲兩種類型:
避免使用你的頁面使用客戶端重定向,同時將服務器端重定向保持在最低限度內,從而優化網頁加載時間。
一個執行、加載速度快的站點相信對站長和用戶而言都是有益的,我但願這篇文章能讓您對頁面加載時間的重要性有足夠的信心。
若是您正在考慮提高您的網站性能,我有一些工具能夠分享給您,好比Google Pagespeed Insights,Pingdom,YSlow等。這些工具能夠提供完整的報告讓您深刻了解你的網站的短板。但願您的網站也能夠得到更好的用戶體驗。