- 💂 個人網(wǎng)站:【海擁】【摸魚游戲】【神級源碼資源網(wǎng)】
- 🤟 前端學習課程:👉【28個案例趣學前端】【400個JS面試題】
- 💅 想尋找共同學習交流、摸魚劃水的小伙伴,請點擊【摸魚學習交流群】
提高 Web 應用程序的性能是很重要的。我們希望頁面加載得更快、更流暢,并且沒有太多的布局變化。在這篇文章中,我想將關于這些的所有知識一一列出來。
在你的 HTML 中聲明預加載鏈接,以指示瀏覽器盡快下載關鍵資源。
<head>
<link rel="preload" href="critical.css" as="style">
<link rel="preload" href="critical.js" as="script">
</head>
考慮添加 preconnect 或 dns-prefetch 資源提示以建立與重要第三方來源的早期連接。
<link rel="preconnect" href="https://example.com">
<link rel="dns-prefetch" href="https://example.com">.
dns-prefetch 的工作方式與 preconnect 完全相同,但具有更廣泛的瀏覽器支持。
第三方代碼會顯著影響加載性能。但是,你可以通過以下方式修改你使用此第三方庫的方式:
link rel=preconnect
或 link rel=dns-prefetch
對托管第三方腳本的域執(zhí)行 DNS 查找。資源阻止了頁面的第一次繪制??紤]內聯(lián)交付關鍵的 JS/CSS 并推遲所有非關鍵的 JS/樣式。你可以通過僅提供所需的代碼和樣式來減小頁面的大小。
確定關鍵代碼后,將該代碼從呈現(xiàn)阻止 URL 移動到 HTML 頁面中的內聯(lián)腳本標記。
在 HTML 頁面頭部的樣式塊中內嵌第一次繪制所需的關鍵樣式,并使用預加載鏈接異步加載其余樣式。
當你構建一個大型應用程序時,你將到達一個地方,你的項目可能有更多它實際需要和使用的代碼。
使用CSS Minification或Terser JS Plugin等工具。
要消除未使用的 css,可以使用PurgeCSS之類的工具。
要消除不必要的 JavaScript,你可以使用前面提到的 Terser 或利用Tree Shaking來消除死代碼。你還可以使用代碼拆分,它將代碼拆分為可以按需加載的包。
從包中刪除大型重復的 JavaScript 模塊以減少最終包的大小。
代碼拆分、縮小和壓縮、刪除未使用代碼和緩存技術的結合將大大縮短執(zhí)行時間。
考慮減少解析、編譯和執(zhí)行 JS 所花費的時間。你可能會發(fā)現(xiàn)交付較小的 JS 有效負載有助于此。
這個想法是優(yōu)化我們的 JS 和 CSS 代碼,最小化它并刪除未使用的代碼,以及我們正在使用的第三方庫。
保持主文檔的服務器響應時間較短,因為所有其他請求都依賴于它。
提供適當大小的圖像以保存蜂窩數(shù)據(jù)并縮短加載時間。
<img src="cat-large.jpg" srcset="cat-small.jpg 480w, cat-large.jpg 1080w" sizes="50vw">
優(yōu)化的圖像加載速度更快,消耗的蜂窩數(shù)據(jù)更少。
使用你的圖像 CDN 服務或圖像壓縮應該就足夠了。
WebP 或 Avif 等圖像格式通常提供比 PNG 或 JPEG 更好的壓縮,這意味著下載速度更快,數(shù)據(jù)消耗更少。
在圖像元素上設置明確的寬度和高度,以減少布局偏移并改善 CLS。
預加載 LCP 元素使用的圖像以縮短 LCP 時間。
<link rel="preload" href="/path/to/image.jpg" as="image">
head() {
return {
link: [
{
rel: 'preload',
as: 'image',
href: 'path/to/lcp/image',
},
],
}
}
在 webfont 加載期間所有文本仍然可見
利用字體顯示 CSS 功能確保文本在加載網(wǎng)絡字體時用戶可見。
@font-face {
font-family: 'Arial';
font-display: swap;
}
font-display API 指定字體的顯示方式。swap 告訴瀏覽器使用該字體的文本應該立即使用系統(tǒng)字體顯示。自定義字體準備就緒后,它將替換系統(tǒng)字體。
例如,對于 Google 字體,只需將 &display=swap 參數(shù)添加到 Google 字體 URL 的末尾即可:
<link href="https://fonts.googleapis.com/css?family=Roboto:400,700&**display=swap**" rel="stylesheet">
Cumulative Layout Shift (CLS) 是一項 Core Web Vitals 指標,通過對不是由用戶交互引起的所有布局偏移求和來計算。
大型 DOM 會增加內存使用量,導致更長的樣式計算,并產(chǎn)生代價高昂的布局回流。
重定向在頁面加載之前引入了額外的延遲。
Polyfill 和轉換使舊版瀏覽器能夠使用新的 JavaScript 功能。但是,對于現(xiàn)代瀏覽器來說,很多都不是必需的。
大型網(wǎng)絡有效載荷使用戶付出了真金白銀,并且與較長的加載時間高度相關。
對于連接速度較慢的用戶,通過 document.write() 動態(tài)注入的外部腳本會使頁面加載延遲數(shù)十秒。
未合成的動畫可能很重并會增加 CLS。請改用translate和scaleCSS 屬性。
你現(xiàn)在對提高 Web 性能有了更多的了解。請記住,提高性能不是你可以坐下來解決的問題。這是一個持續(xù)的過程,應該定期解決性能問題,這樣你網(wǎng)站的新功能(肯定需要)不會破壞性能。
《前端工程化:基于Vue.js 3.0的設計與實踐》
本書以Vue.js的3.0版本為核心技術棧,圍繞“前端工程化”和TypeScript的知識點展開講解,根據(jù)筆者多年的前端開發(fā)和一線團隊管理經(jīng)驗,將Vue 3的知識點按照工程師做項目的實施順序梳理成章,一步一步幫助讀者進行前端工程化和Vue 3的開發(fā)。從前端工程化開始到TypeScript語言的學習,再到使用TypeScript開發(fā)Vue 3項目,通過循序漸進的學習過程提升讀者在前端工程化領域的實戰(zhàn)能力。
📚 京東自營購買鏈接:《前端工程化:基于Vue.js 3.0的設計與實踐》
聯(lián)系客服