網(wǎng)頁性能優(yōu)化技巧:減少數(shù)據(jù)量、刪除重復(fù)項、設(shè)置自動縮小和應(yīng)用壓縮算法
2024-09-17
1. 盡量減少需要傳輸?shù)臄?shù)據(jù)量
首先,刪除所有未使用的部分,例如 中不可訪問的函數(shù)、選擇器從不匹配任何元素的樣式,以及 CSS 中永遠(yuǎn)隱藏的 HTML 標(biāo)簽。其次,刪除所有重復(fù)項。然后,我建議設(shè)置一個自動最小化過程。例如網(wǎng)站模板,它應(yīng)該刪除來自后端服務(wù)的所有注釋(但不是源代碼)以及每個不包含其他信息的字符(例如 JS 中的空格字符)。完成后,剩下的就可以是文本了。這意味著我們可以安全地應(yīng)用壓縮算法,例如 GZIP(大多數(shù)瀏覽器都能理解)。最后,還有緩存。這在瀏覽器第一次呈現(xiàn)頁面時不會有太大幫助,但在后續(xù)訪問中會節(jié)省很多。但關(guān)鍵是要記住兩件事:
如果您使用 CDN,請確保支持緩存并正確設(shè)置。
您可能希望從自己的角度更早地更新資源,而不是等待資源的到期日期。將文件的“指紋”嵌入 URL 中以使本地緩存無效。
當(dāng)然,應(yīng)該為每種資源定義緩存策略。有些資源可能很少更改,或者根本不更改。有些資源更改得更快。有些資源包含敏感信息,有些資源可能被視為公開信息。使用“”指令可防止 CDN 緩存私人數(shù)據(jù)。Web 圖像也可以進(jìn)行優(yōu)化,盡管圖像請求不會阻止解析或渲染。
2.減少關(guān)鍵資源的總數(shù)
“關(guān)鍵”僅指頁面正確呈現(xiàn)所需的資源。因此,我們可以跳過所有不直接參與此過程的樣式以及所有腳本。
樣式表
為了告訴瀏覽器不需要特定的 CSS 文件seo優(yōu)化,我們應(yīng)該為引用樣式表的所有鏈接設(shè)置 屬性。使用這種方法,瀏覽器將僅根據(jù)需要處理與當(dāng)前媒體(設(shè)備類型、屏幕尺寸)匹配的資源,同時降低所有其他樣式表的優(yōu)先級(它們將被處理,但不會成為關(guān)鍵渲染路徑的一部分)。例如,如果您向引用打印頁面樣式的 標(biāo)簽添加 = "" 屬性,則當(dāng)介質(zhì)未打印時(即,當(dāng)頁面顯示在瀏覽器中時),這些樣式不會干擾關(guān)鍵渲染路徑。
為了進(jìn)一步改善流程網(wǎng)站優(yōu)化,一些樣式也可以內(nèi)聯(lián)。這至少為我們節(jié)省了一次往返服務(wù)器的次數(shù),否則就需要往返服務(wù)器來獲取樣式表。
腳本
如上所述,腳本會阻塞解析器,因為它們可以更改 DOM 和。因此,不會更改它們的腳本不應(yīng)被解析為塊,從而節(jié)省我們的時間。為了實現(xiàn)這一點,所有腳本標(biāo)簽都必須標(biāo)有或?qū)傩浴?/p>
標(biāo)記為“”的腳本不會阻止 DOM 構(gòu)建或“”,因為它們可以在構(gòu)建之前執(zhí)行。但請記住,內(nèi)聯(lián)腳本無論如何都會阻塞,除非您將它們放在 CSS 之上。相反,標(biāo)記為“”的腳本在頁面加載結(jié)束時進(jìn)行評估。因此,它們不應(yīng)該影響文檔(否則它們會觸發(fā)重新渲染)。
換句話說,使用時,腳本直到頁面加載事件觸發(fā)才會執(zhí)行,同時允許腳本在解析文檔時在后臺運行。
3.縮短關(guān)鍵渲染路徑長度
最后,應(yīng)盡量減少CRP長度。在一定程度上,上述方法可以實現(xiàn)這一點。
媒體查詢作為樣式標(biāo)簽的屬性將減少必須下載的資源總數(shù)。腳本標(biāo)簽屬性和將防止相應(yīng)腳本阻塞解析。使用 GZIP 最小化、壓縮和存檔資源將減少傳輸數(shù)據(jù)的大小(從而減少數(shù)據(jù)傳輸時間)。內(nèi)聯(lián)某些樣式和腳本可以減少瀏覽器和服務(wù)器之間的往返次數(shù)。
我們還沒有討論過在文件之間重新排列代碼的選項。根據(jù)最新的最佳性能理念,網(wǎng)站應(yīng)該最快完成的第一件事是顯示 ATF 內(nèi)容,ATF 代表首屏以上,即無需滾動即可立即看到的區(qū)域。因此,最好重新排列與渲染相關(guān)的所有內(nèi)容,以便首先加載所需的樣式和腳本,然后停止其他所有內(nèi)容 — 既不解析也不渲染,并且始終記住在進(jìn)行更改之前和之后進(jìn)行測量。
簡而言之網(wǎng)站優(yōu)化,網(wǎng)站性能優(yōu)化包括網(wǎng)站響應(yīng)的各個方面,例如緩存、設(shè)置 CDN、重構(gòu)、資源優(yōu)化等,但所有這些都可以逐步完成。作為 Web 開發(fā)人員,您應(yīng)該將本文作為參考,并始終記得在實驗前后測量性能。