網站速度的重要性不言而喻,除了使用常規的緩存插件方法外,今天想從技術角度聊聊優化網頁加載速度的問題。
提示一下,文章會涉及到前端代碼等技術相關的內容,有點晦澀,對此不感冒的可以直接退出了。
都知道,HTML 代碼中的 <head> 標簽區域內通常會放一堆腳本、樣式,以及 Meta 相關的內容。但是我發現很多插件,或者說比較多的網站站長并不會注意這些元素的排列順序。
所以不得不提醒大家的是,錯誤的排列順序會直接影響網站的加載速度和網頁渲染效率。至于具體的技術原理,推薦大家看看下面的這個視頻,我便不展開敘述了。
在視頻中,作者有推薦代碼片段的最佳排序順序,我簡單總結一下各個腳本的用處及特點,借花獻佛。
首先放置 preconnect 類型標簽,用于告訴瀏覽器在請求之前預連接到指定的資源服務器,這么做有助于減少建立連接的延遲,從而提高頁面加載性能。
例如字體服務器、CDN 服務器或其他托管第三方資源的服務器。這樣,當瀏覽器真正需要請求這些資源時,客戶端與服務端已經建立好連接,從而減少了鏈接往返的時間。
接著便是 script-async 標簽了,這種標簽的主要作用就是指定腳本的異步加載方式。當腳本使用?async?
屬性時,它將在加載時不會阻塞 HTML 解析,并且在加載完成后立即執行,而不考慮頁面中其他內容的加載狀態。
然后是 css-contains-@ import 標簽了。在 CSS 中,@import
是一種用于導入外部樣式表的規則。它允許將一個 CSS 文件嵌套在另一個 CSS 文件中,從而可以將多個樣式文件組織在一起,便于管理和維護。但是現在這種規則很少用了,大多是使用 <link> 標簽進行替代了。
緊接著就是 sync-js 與 sync-css 標簽了,作用就是用于控制 JavaScript 腳本或者 CSS 腳本的加載和執行方式。
接下來就是 preload 腳本,其主要的作用就是在頁面加載時預加載資源(如腳本、樣式表、字體等)。它可以在瀏覽器空閑時提前加載這些資源,以優化頁面性能,提高用戶體驗。
preload 腳本之后的便是 script-defer 腳本了,其實這是 HTML 中?<script>
標簽的一個屬性,用于控制腳本的延遲加載方式。通過使用?defer?
屬性,可以讓腳本在 HTML 解析完成后再執行,而不會阻塞頁面的加載。
最后便是 prefetch 與 prerender 相關的腳本了,這兩個都是 HTML 中的?<link>
標簽的屬性,用于優化資源預加載以提高頁面性能。它們可以在瀏覽器空閑時預先加載資源,以便在未來需要時可以立即使用。
對了,像我們平時安裝的 Google Analytics 監控代碼、SEO 相關的腳本代碼,是不宜直接放在頁面頂部的。一般我的做法便是放在最后,等頁面網頁加載與頁面渲染全部做完之后,再來執行監控相關代碼。
但是谷歌等平臺一般建議,都是讓你直接放在頁面頂部。所以從這個角度出發,不要老是聽谷歌的建議。
說完了各類型腳本的排列順序,再來介紹一款與之相關的速度測試與性能優化開源工具,capo.js。
鏈接:https://github.com/rviscomi/capo.js
工具的基本原理就是上面提及的,計算并統計各類型腳本的加載時長,并給出相應的優化建議。具體的實操細節便不介紹了,需要一點代碼能力,有興趣的可以具體實踐一下。
好消息是,這款工具的發布者最近開發了一款瀏覽器插件,但實際使用過后,給我的感覺并不是很好用。如果有會代碼的朋友不妨從這個點切入,去做個相關產品出來,不失為一個生財點。
文章為作者獨立觀點,不代表DLZ123立場。如有侵權,請聯系我們。( 版權為作者所有,如需轉載,請聯系作者 )

網站運營至今,離不開小伙伴們的支持。 為了給小伙伴們提供一個互相交流的平臺和資源的對接,特地開通了獨立站交流群。
群里有不少運營大神,不時會分享一些運營技巧,更有一些資源收藏愛好者不時分享一些優質的學習資料。
現在可以掃碼進群,備注【加群】。 ( 群完全免費,不廣告不賣課!)