外掛說明
這個外掛使用瀏覽器原生功能延遲載入網頁中的媒體內容。進一步了解全新 loading
屬性,或查看 WordPress core ticket 所討論的 WordPress 核心程式類似的實作項目。
如果使用者的瀏覽器不支援 loading
屬性,外掛會以基於 IntersectionObserver
API 的 JavaScript 解決方案進行後援。對於停用 JavaScript 功能但支援 loading
屬性的瀏覽器案例,不須進行任何變更,便會加入包含 loading
屬性的對應元素 noscript
變數。
原生功能,就是快
如果你在尋找解決方案,應該會發現效能對網站的使用者體驗及成功有多麼關鍵,也了解延遲載入對增進效能是個關鍵功能。但是延遲載入這個解決方案本身目前仍會造成負擔,因為它依賴載入、剖析及執行自訂 JavaScript 運作邏輯,這對效能或多或少會產生影響。
這個外掛在最大程度上解決了這種模式。它依賴全新的 loading
屬性,這使得延遲載入成為瀏覽器的原生功能。Chrome 已開始支援這個屬性,其他瀏覽器也會逐漸開始支援。當解決方案為「原生功能」時,代表它不會依賴自訂的 JavaScript 運作邏輯,進而輕量化,而「輕量化」就代表著「更快的速度」。
最後,隨著更多的瀏覽器支援 loading
屬性,這個外掛所能增進的效益會越來越明顯。
使用方式
僅需啟用外掛,便會讓瀏覽器在瀏覽網站時,延遲載入全部頁面的圖片及 iFrame。
引用資訊
這個外掛的部分運作邏輯來自 WP Rig 專案,並參考 web.dev 及 developers.google.com 的建議。
安裝方式
- 將安裝套件 ZIP 壓縮檔解壓縮所得的
native-lazyload
資料夾上傳至網站的/wp-content/plugins/
目錄,或透過 WordPress 管理後台下載安裝。 - 在 WordPress 管理後台的 [外掛] 選單中啟用外掛。
常見問題集
- 外掛的設定頁面位於何處?
-
這個外掛沒有設定頁面,啟用後便開始執行。
- 如何不對圖片及 iFrame 進行延遲載入?
-
透過加入
skip-lazy
類別,便可要求外掛不對含有這個類別的圖片或 iFrame 進行延遲載入。 - 這個外掛仍會載入額外的 JavaScript 檔案,我不認為這是個好方法。
-
這是完全合理的做法。請注意,外掛僅有在使用者的瀏覽器不支援原生
loading
屬性時,才會因需要進行後援而載入 JavaScript 檔案,而這個檔案包含以非原生方式自動載入圖片的運作邏輯。如果只想依靠loading
屬性而不進行任何後援,請在網站的程式碼庫中加入add_filter( 'native_lazyload_fallback_script_enabled', '__return_false' )
便可達成。 - 這個外掛能與 AMP 協同運作嗎?
-
如果網站採用了 AMP,由於 AMP 會自動以智慧方式延遲載入頁面中的媒體內容,因此不需要這個外掛。可以確定的是,這個外掛並不會與 AMP 產生相容性問題。
- 在何處可以提出技術支援要求?
-
如為一般技術支援要求,請前往 WordPress.org 技術支援論壇提出。如果外掛發生技術問題,而你已經了解如何修復這個問題,請改在外掛的 GitHub 存放庫提出。
- 如何為這個外掛做出貢獻?
-
如果對這個外掛有任何改進或修正程式碼錯誤的意見,請直接在這個外掛的 Github 存放庫提出問題或提取要求,但需遵守專案參與準則。
你也可以透過本地化這個外掛的方式參與專案,請前往 translate.wordpress.org 便可開始著手進行。
使用者評論
參與者及開發者
變更記錄
1.0.2
- Fix broken images which are using data URI scheme (e.g. base64-encoded images). Props ieim.
- Fix images in IE 11 not being loaded until the user starts scrolling. Props Soean.
- Fix image loading script not working in IE10 and other browsers that do not support
dataset
.
1.0.1
- Improve compatibility with other plugins by using more specific class and only adding it for JS fallback.
- Run lazy-load script on
DOMContentLoaded
when necessary to improve compatibility with plugins like Autoptimize. - Do not transform elements inside an AJAX response due to lack of predictability of the context and script execution.
1.0.0
- Initial release