W3 Total Cache Minify外掛程式設定:嵌入類型怎麼選?我的踩坑經驗與保命建議

W3 Total Cache Minify 嵌入類型不選?分享站長實測踩坑經歷,手把手教你精準選型Minify 嵌入類型,規避網站樣式錯亂、加載崩潰風險,附零基礎可直接套用的保命設定方案,WordPress 提速不翻車!

我之前先給一個網站做優化,打開W3 Total Cache 的Minify 設定一看,直接傻眼了。那個嵌入類型的下拉式選單裡擺著四個選項:預設(阻止)、使用JS進行非阻塞、使用「非同步」進行非阻塞、使用「延遲」進行無阻塞。

我尋思了一下,這都啥跟啥啊?

相信我,你不是一個人。這四個選項別說是新手了,就算用WordPress 用了幾年,第一次看到這個介面大機率也會懵。這篇文章就是把我踩過的坑、總結出來的經驗,直接端到眼前。你不需要再去翻文檔,直接按著我說的做就行。

這四種嵌入類型到底是啥?

W3 Total Cache Minify外掛程式設定:嵌入類型怎麼選?我的踩坑經驗與保命建議

先講講這四個選項都是什麼德性。

預設(阻止),英文叫Default blocking。這是最老實的做法,瀏覽器遇到腳本就停下來,先把腳本下載完、執行完,再繼續往下渲染頁面。聽起來挺可靠對吧?但代價就是你的首屏載入會被堵住,用戶打開頁面得等腳本跑完才能看到東西。

使用JS進行非阻塞,這個比較有意思。它不是直接在頁面上寫script 標籤,而是先輸出一個小腳本,等頁面先跑起來之後,再透過JavaScript 動態把那些要載入的腳本注入到頁面裡。這樣頁面可以先渲染出來,腳本再慢慢載入。聽起來挺美好吧?但問題在於,這個動態注入的過程可能會打亂腳本原來的執行順序,如果你頁面裡有些腳本很依賴執行順序,可能就會出問題。

使用“非同步”進行非阻塞,這就是在script 標籤上加個async 屬性。腳本會在背景非同步下載,下載完就立刻執行,頁面不會等它。但缺點是執行順序完全不受控制,誰先下載完誰先執行,根本不管你在程式碼裡寫的順序。

使用“延遲”進行無阻塞,這個就是加defer 屬性。腳本會等到頁面整個解析完後再執行,關鍵是,它會保持你原來寫的順序。這就比較人性化了,既不堵首屏,又不亂順序。

到底該選哪個?

說穿了,這四個選項就是在做一個選擇題:你要速度,還是要順序。

我的建議是這樣的:

如果你網站規模不大,腳本不多,而且你對載入速度沒有那麼極端的要求,直接用預設(阻止)最省心。雖然慢一點,但不會出亂子。

如果你想提升首屏速度,而且你的腳本之間沒有那種「A必須在B之前執行」的強烈依賴關係,優先選使用“延遲”進行無阻塞(defer)。這幾乎是目前最理想的方案,既不堵渲染,又能保順序。

如果你試了defer 之後發現某些功能還是有問題,再考慮使用JS進行非阻塞。這個方案更激進一些,但相容性也稍微差一點。

使用“非同步”進行非阻塞(async)是我最不推薦的一個。因為執行順序完全亂套,除非你非常確定你的腳本都是獨立運行的,否則很容易翻車。

我踩過的兩個大坑

光說不練假把式。我把自己踩過的兩個坑寫下來,你對照著看能不能避過去。

第一個坑:WordPress 主題自訂無法即時預覽

有一陣子在自訂主題的時候,點選儲存之後,預覽介面愣是不刷新。改了點東西,刷新頁面一看,還是老樣子。

後來研究半天,發現是Minify 的壓縮功能在作妖。解決方案很簡單:

進入W3 Total Cache 插件的常規設置,找到“壓縮”那個選項,把勾取消掉。然後在右上角點選「儲存設定」下面那個小箭頭,選「保存設定和清除快取」。這一步很關鍵,不清楚快取的話你看到的還是舊版本。

弄完之後再進主題自訂,即時預覽就恢復正常了。

第二個坑:Astra 主題搜尋框點選無反應

這個坑我踩得比較久。用的是Astra 主題,某天突然發現搜尋框怎麼點都沒反應。一開始以為是主題本身的問題,結果後來發現是W3TC 的Minify 設定搞的鬼。

解決方法如下:

進入W3 Total Cache → 常規設定→ 壓縮進階設定→ JS → 縮小引擎設置→ 區域設置,把嵌入類型改成這兩個之一:

  1. 在之前,使用JS進行非阻塞
  2. After,使用JS進行非阻塞

同樣,清除緩存,刷新頁面,搜尋框就能正常工作了。

至於為什麼是這兩個選項而不是其他的,我也查過一些資料,簡單來說就是Astra 主題的前端元件對腳本的執行時機比較敏感,某些非阻塞方式會導致事件綁定失敗。用「使用JS進行非阻塞」這個模式,可以確保腳本在頁面載入完成之後再執行,同時又不會像async 那樣亂順序。

落地清單

最後給你一個可以直接照著做的清單:

第一步,先明確你的目標。是要首屏載入最快,還是求穩不出錯?這決定了你要用哪種嵌入類型。

第二步,不要一次全部改掉。先找一個不重要的頁面測試,觀察個一兩天,確認沒問題再全站推廣。

第三步,每次修改之後一定要清除快取。 W3TC 的快取機制會讓你看到的不是最新改動,所以「清除快取再測試」這一步絕對不能省。

第四步,用瀏覽器的開發者工具或PageSpeed Insights 之類的工具,比較一下前後的載入速度。數據說話,別憑感覺。

寫在最後

說實話,我第一次看到這個嵌入類型設定的時候,也是在那愣了半天。預設阻塞感覺太慢,非同步又不保證順序defer 又怕相容性問題,選哪個都覺得心裡沒底。

但後來想明白了,這就是個權衡的東西。你不可能既要最快又要最穩,總得犧牲一頭。我的經驗就是,先用defer,這是目前最穩健的非阻塞方案,出了問題再往回調。

如果你也遇到了類似的問題,或是按我的方法弄完之後還有別的情況,歡迎來聊聊。網站這事兒就是這樣踩坑踩過來的,誰也不例外。

謝謝你看我的文章,我們,下次再見。

希望陳溈亮博客( https://www.chenweiliang.com/ ) 分享的《W3 Total Cache Minify外掛程式設定:嵌入類型怎麼選?我的踩坑經驗與保命建議》,對您有幫助。

歡迎分享本文鏈接:https://www.chenweiliang.com/cwl-34003.html

想解鎖更多隱藏秘技🔑,歡迎加入Telegram頻道!

喜歡就分享和按讚!您的分享與按贊,是我們持續的動力!

 

發表評論

您的郵箱地址不會被公開。 必填項已用 * 標註

回到頁首