什么是延遲?
延遲是用戶操作與結(jié)果響應(yīng)之間經(jīng)過(guò)的時(shí)間。網(wǎng)絡(luò)延遲特指網(wǎng)絡(luò)內(nèi)部或 Internet 上發(fā)生的延遲。實(shí)際上,延遲是指用戶操作與網(wǎng)站或應(yīng)用程序?qū)Υ瞬僮髯龀鲰憫?yīng)之間的時(shí)間,例如,用戶點(diǎn)擊網(wǎng)頁(yè)鏈接到瀏覽器顯示該網(wǎng)頁(yè)之間的延遲時(shí)間。
盡管 Internet 上的數(shù)據(jù)以光速傳播,但由于 Internet 基礎(chǔ)設(shè)施設(shè)備造成的距離和延遲的影響,延遲永遠(yuǎn)無(wú)法完全消除。但延遲可以并且應(yīng)該最小化。大量的延遲會(huì)導(dǎo)致網(wǎng)站性能下降, 對(duì) SEO 產(chǎn)生負(fù)面影響 ,并可能導(dǎo)致用戶完全離開網(wǎng)站或應(yīng)用程序。
什么導(dǎo)致互聯(lián)網(wǎng)延遲?
網(wǎng)絡(luò)延遲的主要原因之一是距離,特別是發(fā)出請(qǐng)求的客戶端設(shè)備與響應(yīng)這些請(qǐng)求的服務(wù)器之間的距離。如果網(wǎng)站托管在俄亥俄州哥倫布市的數(shù)據(jù)中心,它將在 10 到 15 毫秒之內(nèi)迅速響應(yīng)辛辛那提(約 100 英里外)用戶的請(qǐng)求。而洛杉磯(約 2200 英里外)的用戶將面臨接近 50 毫秒的更長(zhǎng)延遲。
增加幾毫秒似乎并不算多,但客戶端和服務(wù)器建立連接所需的所有來(lái)回通信、頁(yè)面的總大小和加載時(shí)間,以及數(shù)據(jù)沿路經(jīng)過(guò)的網(wǎng)絡(luò)設(shè)備,都會(huì)導(dǎo)致延遲加劇??蛻舳税l(fā)出請(qǐng)求后,響應(yīng)到達(dá)客戶端設(shè)備所花費(fèi)的時(shí)間量稱為往返時(shí)間(RTT) 。
穿越 Internet 的數(shù)據(jù)通常不僅要跨越一個(gè)網(wǎng)絡(luò),還要跨越多個(gè)網(wǎng)絡(luò)。HTTP 響應(yīng)需要通過(guò)的網(wǎng)絡(luò)越多,造成延遲的機(jī)會(huì)就越多。例如,當(dāng)數(shù)據(jù)包跨越網(wǎng)絡(luò)時(shí),它們會(huì)通過(guò) Internet 交換點(diǎn)(IXP)。在那里,路由器必須處理和路由數(shù)據(jù)包,有時(shí)路由器可能需要將它們分解為較小的數(shù)據(jù)包,所有這些都會(huì)導(dǎo)致 RTT 增加幾毫秒。
此外,網(wǎng)頁(yè)的構(gòu)建方式也可能導(dǎo)致性能降低。具有大量?jī)?nèi)容或從多個(gè)第三方加載內(nèi)容的網(wǎng)頁(yè)可能運(yùn)行緩慢,因?yàn)闉g覽器必須下載大文件才能顯示它們。用戶可能就在其要訪問(wèn)的網(wǎng)站的托管數(shù)據(jù)中心旁邊,但是,如果網(wǎng)站包含多張高清圖片(舉例來(lái)說(shuō)),加載圖像時(shí)仍然可能會(huì)有一些延遲。
網(wǎng)絡(luò)延遲、吞吐量和帶寬
延遲、帶寬和吞吐量都相互關(guān)聯(lián),但是它們衡量的是不同的事物。帶寬是在任何給定時(shí)間可以通過(guò)網(wǎng)絡(luò)的最大數(shù)據(jù)量。吞吐量是給定時(shí)間段內(nèi)實(shí)際通過(guò)的平均數(shù)據(jù)量。吞吐量不一定等于帶寬,因?yàn)樗鼤?huì)受到延遲的影響。延遲是時(shí)間的度量,而不是某時(shí)段內(nèi)下載的數(shù)據(jù)量。
如何減少延遲?
使用 CDN (內(nèi)容交付網(wǎng)絡(luò))是減少延遲的重要一步。CDN 緩存靜態(tài)內(nèi)容,從而大大減少 RTT。(使用 Cloudflare CDN,還可以通過(guò) Cloudflare Workers 緩存動(dòng)態(tài)內(nèi)容。)CDN 服務(wù)器分布在多個(gè)位置,因此內(nèi)容存儲(chǔ)在距離最終用戶更近的位置,無(wú)需傳輸很遠(yuǎn)的距離即可到達(dá)用戶。這意味著加載網(wǎng)頁(yè)將花費(fèi)更少的時(shí)間,從而提高網(wǎng)站的速度和性能。
Web 開發(fā)人員還可以最大程度地減少渲染阻塞資源的數(shù)量(例如,最后加載 JavaScript),優(yōu)化圖像以加快加載速度,并盡可能減小文件大小。代碼極簡(jiǎn)化是減少 JavaScript 和 CSS 文件大小的一種方法。
通過(guò)策略性地首先加載某些資產(chǎn),可以減少感知到的延遲。可以將網(wǎng)頁(yè)配置為首先加載頁(yè)面的上半版版面區(qū)域,以便用戶在頁(yè)面加載完之前就可以開始與頁(yè)面進(jìn)行交互(上半版版面指用戶向下滾動(dòng)之前在瀏覽器窗口中顯示的內(nèi)容)。網(wǎng)頁(yè)也可以使用延遲加載技術(shù),僅在需要時(shí)加載資產(chǎn)。這些方法實(shí)際上并沒有改善網(wǎng)絡(luò)延遲,但是確實(shí)改善了用戶對(duì)頁(yè)面速度的感知。
用戶如何解決延遲問(wèn)題?
有時(shí),網(wǎng)絡(luò)延遲是由用戶端而非服務(wù)器端的問(wèn)題引起的。盡管帶寬不能保證網(wǎng)站性能,但如果持續(xù)存在延遲問(wèn)題,消費(fèi)者始終可以選擇購(gòu)買更多帶寬。切換到以太網(wǎng)而不是 WiFi 將使 Internet 連接更加穩(wěn)定,并且通常會(huì)提高 Internet 速度。用戶還應(yīng)定期應(yīng)用固件更新并在必要時(shí)完全更換設(shè)備,以確保其互聯(lián)網(wǎng)設(shè)備最新。