whoops.

快取是內建行為:先判斷誰在看、會不會過期、瓶頸在哪一層

網站快取分層圖解:副本、更新、排除
保存副本,也要知道何時失效

快取不是裝了才存在的功能,而是寫在每份回應上的規則:能存多久、可否共用、誰該排除,由瀏覽器、CDN、伺服器各層接力執行。先判斷誰在看、會不會過期、瓶頸在哪一層,再把排除清單與失效機制設計好,舊內容不再反覆出現,清除也不必再當例行保養。

本頁目錄

先把場景設成一個標示為示意的情境:週年檔前一天,行銷團隊把活動頁的折扣文案改成限定品項的新優惠,投放的同事卻回報,廣告連過去的落地頁還寫著舊方案;再過半天,客服開始收到「頁面價格跟結帳金額對不上」的問題。眾人的直覺都是清快取,後台的清除按鈕按了幾輪,還是有部分訪客看到舊版。這時你面對的其實不是單一故障,而是三個性質不同的問題混在一起:內容更新沒有如預期生效、含個人狀態的頁面被不該共用的方式處理、以及你還不確定慢的根源落在哪一層。

有一個容易被忽略的事實,可以先把你手上的問題縮小:就算網站一個快取外掛都沒裝,它此時也正在被快取。訪客的瀏覽器依照回應上的規則保存圖檔與樣式,主機與資料庫層有各自的暫存機制,搜尋引擎與部分電信業者的代理伺服器在中間也存有副本。快取不是你加裝之後才存在的功能,而是網路運作方式的一部分;你真正能控制的,是寫在每份回應上的規則:這份內容可以保存多久、可不可以直接發給下一個訪客、過期之後要不要回源站核對一次。

用一句白話把定義說完:快取就是把會被重複拿的東西先做好一份,放在離取用者比較近的地方,下次直接取用,不必回到源頭重做一次。這個動作由瀏覽器、快取外掛、伺服器與內容傳遞網路接力完成,每一層都照規則辦事。接下來的討論順序是先分診症狀,再依序回答三個判斷問題:這份內容誰在看、會不會過期、瓶頸落在哪一層。答案不同,該做的事完全不同。文中對效果的描述都以實際量測為準,因為成效取決於主機條件、命中率與站點型態,沒有放諸各站皆同的數字。

快速重點:快取的單位是一份回應,保存與共用的規則寫在回應標頭上,各層照規則辦事。訪客看到舊內容,多半是副本還在效期內,不是故障。個人狀態與交易資料不能直接共用,要列進排除清單。先判斷誰在看、會不會過期、瓶頸在哪一層,清除只留給變更後驗證與排查救急兩種時機。

你的情況屬於哪一種:三種症狀先分診,再決定動手的位置

先把症狀分對,再決定動手的位置。症狀一是改了內容、前台卻遲遲不是最新版,這多半是失效設計沒有接好,某一層的副本還在效期內;症狀二是結帳、會員或個人化頁面出現資訊錯亂,這是把不該共用的內容放進了共用副本,問題出在排除清單;症狀三是速度分數長期低迷,瓶頸往往不在快取這一層,而在圖片、主機、前端程式或資料庫查詢。三條處理路線完全不同,把清除快取當成對所有症狀的第一反應,代價是同樣的問題反覆發作,而根因一直沒有被找到。

左右捲動檢視完整表格

症狀常見誤判該走的處理路線
改了內容,前台沒有出現最新版以為主機壞了或外掛失效,反覆全站清除排查是哪一層的副本還沒換新,把更新與失效的路徑接好
結帳、會員或個人化頁面資訊錯亂以為是外掛衝突,忙著停用又啟用檢查排除清單,不能共用的頁面不進快取
速度分數長期低迷以為快取沒開滿,持續調整快取設定先把瓶頸歸位:圖片、主機、前端或資料庫

分診的價值在於止血與根治分開。清除快取在症狀一可以當即時的止血手段,讓最新的內容至少對部分訪客生效;但它對症狀二沒有幫助,清掉重建出來的還是一份不該共用的副本;對症狀三更只是安慰劑,因為慢的根源如果是一張未壓縮的圖片,副本存得再多也不會變輕。常見的循環是這樣:三種情況全被倒在「清一下」這個動作上,問題以週為單位反覆出現,設定檔裡真正的錯誤始終沒有被翻開來看。

速度對生意的意義有官方資料可以對照,但也僅止於趨勢而非保證。Google 的開發者團隊整理過載入時間與訪客行為的關係:頁面載入時間拉長,訪客離開的機率跟著上升,速度研究把它列為影響體驗的基礎變數。在搜尋那一端,頁面體驗文件把速度相關訊號定位成眾多排名因素之一,而不是唯一決定條件;更早的 2018 年 1 月,Google 在行動搜尋納入速度訊號的公告裡也是同樣的口徑。速度值得投資,但它是必要條件之一,不是把分數拉高就能直接換成訂單的門票。

在站方的日常工作清單上,這些判斷屬於技術性 SEO 的範圍,因為速度、可抓取性與內容正確性到頭來都會回到同一個源頭:技術性 SEO 的整體架構。如果你眼前的困擾偏向症狀三,先別動快取設定,把量測流程完整走完再說,定位的方法在網站變慢的排查與修復有另一篇可以對照。

就算什麼都不裝,你的網站也正在被快取

回到定義層面把機制說清楚:快取不是裝了才存在的東西,而是把會被重複拿的內容先做好一份、放在離取用者較近的地方,讓下一次取用不必回到源頭重做一次。規則寫在每份 HTTP 回應的標頭上,包括可以保存多久、到期後要不要向源頭核對、可不可以直接發給其他訪客。瀏覽器與主機層本來就照這些規則辦事,所以就算你什麼都不裝,網站此時也正在被快取;外掛扮演的角色,是幫你把規則寫得更完整,並且把整頁的回應存成可以直接取用的副本。

WordPress 的情境特別需要頁面快取,原因在它的運作方式:每個未被快取的請求進來,主機都要重新執行程式、向資料庫要資料、把頁面組好再送出。WordPress 官方的效能文件把快取列為影響面最大的改善手段之一,頁面快取的做法是把組好的 HTML 存下來,之後的請求直接送出這份副本,跳過重新組頁的過程。不過官方的措辭是條件式的:實際改善幅度取決於主機條件、命中率與站點內容,任何具體到「幾毫秒」「快幾倍」的承諾,都超過證據能支撐的範圍。

把副本想成某一刻的快照,很多現象就說得通了。快照拍照的那一刻是對的,之後源頭變了,快照不會自己知道;你等於用「可能拿到舊一點的內容」換取「取用變快」。這筆交易划不划算,取決於內容的性質,於是衍生出兩個設計題:這份內容多久該換新,對應效期與失效設計;它能不能原樣發給每一個訪客,對應共用判斷。用商業頁面的語言分,就是三類:公開內容、個人狀態、交易流程。寫好就少動的文章與說明頁屬於第一類;登入後才不同的版面屬於第二類;購物車到結帳屬於第三類。這套分類會貫穿後面的排除清單。

許多站長的焦慮來自「我沒裝快取,所以網站慢」這個印象,實際的因果剛好相反:網站從上線那一刻起就被各層快取著,真正的差別在於這些規則是別人給的預設值,還是依你的頁面性質調整過的設定。你可以自己驗證這件事:打開瀏覽器的開發者工具,看看網路面板裡的靜態資源,那些標示為來自快取的項目,就是瀏覽器層照規則保存的結果,跟你有沒有裝外掛無關。把注意力從「裝哪個工具」移到「規則寫對了沒」,後面每個判斷都會變得具體:誰在看、會不會過期、瓶頸在哪一層,三個問題各自對應一套可以檢查的設定。

一次請求會路過誰:從瀏覽器到資料庫的接力

要判斷舊內容卡在哪一層,先要知道一個請求是怎麼被接力的:由最靠近訪客的那一層先嘗試回應,手上沒有可用的副本,才往上游走。MDN 的 HTTP 快取文件對多層快取的描述就是這個結構:瀏覽器的私人快取離訪客最近,共享的代理快取與內容傳遞網路在中間,源站的頁面快取與物件快取在後面。各層是上下游的接力關係,不是同時命中;一份回應由誰送出,取決於誰先持有可用的新鮮副本。

照這個順序往回追,排查就有固定的路線。第一個檢查點是訪客端:開無痕視窗再開一次頁面,無痕視窗不帶既有的本機副本與 Cookie,等於用一個乾淨的訪客身分測試;Chrome 官方的清除瀏覽資料說明列出了可清除的項目與範圍,需要的時候可以對照。無痕視窗裡看得到新版、一般視窗還是舊版,問題就收斂到你這台設備的本機副本,站方不需要動任何設定。第二個檢查點是邊緣層:回應標頭裡的年齡與快取狀態欄位,會告訴你這份回應是不是從內容傳遞網路的節點送出、已經保存了多久。第三個檢查點是源站:快取外掛的後台通常會顯示目前的副本狀態與產生時間,對照你發佈內容的時間點就能判斷副本有沒有換新。

路線的後半段有兩種副本要分清楚:整頁副本與物件副本。整頁副本存的是組好的頁面,省的是重新組頁的工;物件副本存的是資料庫查詢的結果,省的是反覆查同一批資料的工。WordPress 站常把兩種都用到,一般討論的快取外掛多以前者為主,物件快取常由主機或獨立的快取系統處理。對排查的意義在於:清了整頁副本還是舊的,問題可能在物件副本或邊緣層,不一定是外掛壞了;反過來,頁面組得快但資料查得慢,加再多的整頁快取也壓不下資料庫那一段的等待。

加參數測試是常見動作,但這裡有個陷阱:不同的內容傳遞網路與快取外掛,對查詢字串的處理方式不同,有的直接忽略、有的把參數當成不同頁面、有的會先正規化再比對。你在網址後面加上亂數想強制拿新版,結果可能被某一層忽略,於是誤判成「快取清不掉」。另一個常見卡點是分工沒有對齊:內容傳遞網路把 HTML 存得太久,或源站清除時沒有通知到邊緣層,兩種情況都會讓「後台明明更新了」的頁面持續送出舊版,而站方在源站怎麼清都看不到效果。邊緣層的角色與設定方式,在內容傳遞網路與網站速度的關係一文有完整的展開,這些卡點多半要到那裡才收得乾淨。

看到舊內容不是故障:效期內的副本本來就會繼續上工

副本還在保存期限內時,各層依規則直接採用它,這是機制照約定行事,不是故障。更新要生效,路徑有三條:等期限自然到期、副本過期後帶著版本標記回源站核對換新、或在源頭變更時主動把相關副本作廢。三條路的代價不同。等期限,設定最簡單但延遲最長;過期核對,多一次往返但內容正確性高,回應上的版本標記讓源站不必重傳整份內容,只說「沒變」或「有變,拿新的」;主動作廢,即時性最好,但要求內容異動與失效機制接得上線。設計好之後,「清了還是舊的」會從日常事故降級成偶發事件。

樣式與腳本沒生效是另一種常見困擾,原因多半與檔名有關:改了檔案內容、檔名不變,瀏覽器層的舊副本就被繼續引用。把每次變更的版本號或內容指紋放進檔名,舊副本自然失效,瀏覽器會去拿新檔。這等於把失效交給命名規則自動處理,不靠到期時間賭運氣,也是少數幾乎沒有副作用的失效手法。

期限設多長是一組交換:設得短,更新很快生效,但回源的次數變多,省下來的運算又回到伺服器身上;設得長,源站負擔輕,但內容換新的延遲也拉長。沒有對所有站都成立的甜蜜點,判斷依據是內容的異動頻率與可容忍的延遲:每天改幾次的活動頁與一年改一次的公司簡介,效期設計本來就該不同。與其記住任何人的建議數字,不如把「這份內容可以被舊多久」當成問題來回答,數字自然會落下來。

主動作廢聽起來是三條路裡最好的選擇,但它有三個常見漏點:直接在資料庫改資料,繞過標準的更新流程,失效事件不會被觸發;由第三方系統批次寫入的內容,同樣可能不通知快取層;以及走非標準路徑的內容更新,外掛根本不知道有東西變了。這也是為什麼有人「明明裝了自動清除,還是偶爾出現舊內容」:機制不是沒有,而是觸發點沒有覆蓋到所有的變更方式。把這三個漏點記下來,後面失效設計一節會把它們接回標準流程。

可以共用,才能快取:排除清單的判斷線與檢查時機

判斷原則只有一條:這份回應能不能原樣發給下一位訪客。同一個網址若因觀看者的身分或時點而給出不同內容,就不能進共用副本,要嘛整頁排除,要嘛改用能區分身分的變體機制。交易流程頁與個人狀態頁是最標準的例子:購物車裡的品項、結帳時的金額、會員中心的資料,都是專屬於單一訪客的內容,快取一份發給所有人,出事只是時間問題。搜尋結果與含即時變動區塊的頁面,則要看規則怎麼設計,再決定排除或部分排除。

以 WooCommerce 為例,WP Rocket 這類成熟外掛出廠時就會把 /cart、/checkout、/my-account 等標準路徑排除在外;真正會漏掉的是預設清單沒列到的頁面:自行開發的功能頁、客製會員系統、第三方預約模組產生的網址,外掛不認得,需要站方自己補進排除清單。值得固定的節奏是:每次安裝新外掛,先確認它帶進站上的頁面都被歸進正確的一邊,再正式上線。

這份內容能共用嗎:公開內容、個人狀態、交易流程
帶有個人狀態或交易資料的頁面,需要另外評估快取與排除方式。

把判斷線展開成檢查清單,每一項都附上「為什麼」,比背死規矩更能應付沒見過的頁面類型:

  • 交易流程頁(購物車、結帳、付款回傳):內容隨訪客的操作即時變動,共用副本等於把 A 的訂單畫到 B 的螢幕上。
  • 個人狀態頁(會員中心、訂單查詢、個人資料):同一個網址對不同人呈現不同內容,快取只能擇一保存。
  • 登入者版面(導覽列顯示帳號、工具列出現管理項目):不分身分的整頁副本,會把訪客版面發給已登入者,或讓訪客反過來撞見管理項目。
  • 站內搜尋結果頁:結果依查詢字串而不同,原則上不進共用副本。
  • 含即時更新區塊的頁面(庫存、報價、聊天訊息):整頁快取會把區塊凍在快照的那一刻。
  • 帶個人參數的查詢字串:追蹤用的參數可以正常處理,帶識別或階段資訊的參數要單獨評估。

讓「同一個頁面」變成「不同回應」的因素,除了路徑,還有 Cookie、查詢字串與地理位置。排除規則常見兩種寫法互相搭配:用路徑條件攔住交易與個人頁,用 Cookie 條件攔住登入狀態,例如偵測到會員 Cookie 存在時改送未快取的版本。帶地理位置判斷的內容,像是幣別、語系或區域庫存,則要確認每一層都把判斷變數納入快取的識別鍵,不然副本會被送到不該收到它的人手上。

檢查的節奏建議綁在三個時機:新裝外掛時,逐一檢視它新增的頁面落在快取或排除的哪一側;改版佈景時,確認新版面沒有把個人化區塊包進整頁副本;上線新功能時,把新頁面放回「能不能原樣發給下一個人」這條判斷線上再問一次。反向的判斷同樣重要:寫好就少動的公開內容,像是多數文章頁與說明頁,放心讓它進快取,別把排除清單無限擴大;排除得太多,等於親手把速度的收益退回去。

速度分數拉不起來?先確認瓶頸真的在快取這層

快取都設好了,分數還是拉不起來,這時要先懷疑瓶頸根本不在快取這層。把一次瀏覽的總等待拆開看:連線的時間、傳輸的時間、伺服器運算的時間、瀏覽器呈現的時間。快取動的是回訪時的運算與部分傳輸,其他段落它碰不到。四種瓶頸快取解不了:圖片體積、主機硬體、前端程式過載、失控的資料庫查詢。

圖片體積

版面裡最大宗的傳輸量常來自圖片:尺寸超過實際顯示、格式老舊、該延後載入的沒有延後。這些問題快取只能緩解回訪,首次開啟的訪客照樣下載完整的重量。圖片的挑選、壓縮與延後載入各有完整做法,圖片壓縮工具的比較與延後載入的設定可以對照著讀。

主機回應

主機是回應速度的地基:伺服器每次回應的基本時間、同時處理多個請求的能力、儲存與記憶體的速度。地基慢,上面每一層都快不起來;快取只是讓回訪的訪客先在半路拿到副本,首次的訪客與回源的請求仍然要等主機。共享主機上的站,在流量成長後遇到尖峰變慢,通常先把主機等級與快取設定分開驗證,再決定要升級哪一邊。

前端程式

互動延遲的量測指標量的是訪客點下到介面有反應的時間,瓶頸常在主執行緒被過多的腳本佔住。這與快取無關:快取救得了下載時間,救不了執行時間。從 互動指標改制到 INP 的脈絡可以看出,搜尋引擎對互動體驗的量法一直在調整,前端程式的整潔度是長期要顧的資產。

資料庫查詢

另一種慢來自失控的查詢:迴圈裡包著查詢,項目一多就變成大量的往返;或某個外掛在每個請求都重跑昂貴的查詢。物件快取能吸收重複的部分,但設計不良的查詢模式,快取只能遮住症狀,遮不住結構。這類問題要在查詢層解,解完之後快取的命中率與效益也會更真實。

把指標當語言來讀診斷:最大內容元件對應載入與圖片,互動到下一次繪製對應主執行緒,版面位移對應結構穩定度。快取可能改善其中與載入相關的部分,對位移與阻塞常常無能為力,任何「裝了快取分數就會變綠」的說法都應該打折聽。Core Web Vitals 的指標定義與速度優化的完整做法另文展開,這裡的原則只有一條:先定位,再動手。

源站快取與邊緣快取:一個省運算、一個省距離

邊緣快取與源站快取解決的是兩種不同的等待。邊緣快取在請求抵達源站之前就把回應送出,省的是距離與往返;源站的頁面快取讓真的回源的那一段變快,省的是組頁的運算。Cloudflare 的快取規則文件描述的正是這個分工:能在邊緣節點命中的請求不會回到源站,沒有命中的才繼續往回走。所以「有了內容傳遞網路就不需要源站快取」,或反過來說「源站快取夠了不必上邊緣」,都把兩件事誤看成同一件;兩層的作用點不同,互相補足。

這個分工在尖峰時刻最看得出價值。活動開賣或檔期開跑的那幾分鐘,請求量集中湧入,邊緣層能就近吸收其中可共用的部分,回源的流量剩下真正需要源站處理的請求;源站這端的頁面快取再讓每次回源的等待縮短。兩層一起上,尖峰的壓力才被拆成兩半各自處理,而不是全部落在主機上。說到邊緣節點的規模,與其引用隨時會變動的數字,不如直接看Cloudflare 公佈的網路覆蓋頁,節點數、頻寬與所在地都列在上面,讀者可以自行對照最新的狀況。

兩層的規則要一致,否則會出現白做的情況:源站把某個路徑排除、邊緣卻照樣快取它,訪客拿到的仍是那份不該共用的副本;反過來,源站清除了整頁副本,邊緣的舊副本還在效期內,一樣送舊版。實務上的決策清單是:哪些路徑交給邊緣、HTML 要不要進邊緣快取、效期設多長、用什麼方式清除,四個問題在兩層之間要對得起來。前面排查一節提到的卡點,多半在這裡找到原因。

對流量大的站,還有一個限定視角:源站的回應狀況可能影響搜尋引擎抓取的節奏,回應慢或錯誤多時,抓取的量可能被調降,抓取預算的分配邏輯值得另讀。但對多數網站,快取不是第一優先的槓桿;沒有明顯跨區流量的站,先把源站層顧好就能取得主要的效果,邊緣層是流量與受眾分佈需要時的加項,不是人人必備的標配。

免費方案夠不夠用:用站型條件判斷,不是比品牌

免費與付費的選擇,用站型條件判斷,不是比品牌或比價格。內容型、沒有會員或交易流程、主機已經穩定的站,免費的頁面快取通常就夠;當站上有交易或個人化流程、需要持續維護排除與失效規則、或需要預熱與整合型優化時,付費方案的價值才浮現。速度不是用錢堆出來的,功能對應需求才是。

左右捲動檢視完整表格

站型該確認的功能免費方案是否夠用
純內容站(文章、說明頁)頁面快取、靜態資源的效期規則通常夠用,重心放在規則而非功能數量
有會員或交易流程的站排除規則的細緻度、登入狀態處理、失效觸發視複雜度而定,規則維護成本可能超過付費門檻
流量高或更新頻繁的站預熱、部分清除、與內容傳遞網路的整合常需要付費功能支撐維運節奏

用兩個常被拿來比較的方案說明判斷方式。WP Fastest Cache 的定位是容易上手的頁面快取:介面單純、基本功能齊全,對剛開始接觸快取設定的站長,先把基本的頁面快取與排除規則跑起來,它的免費版本應付得來。當站型變複雜,評估的重點不是哪個品牌更快,而是你需要的功能清單上有多少它沒有覆蓋到。

WP Rocket 的功能頁列的是整合範圍:頁面快取、靜態資源的處理、與其他服務的搭配,訴求是把常見的設定集中在同一個介面裡;定價頁則反映另一個真實成本:你買的不只是速度,還有維護的省力。要提醒的是,預設值不等於正確值,裝了之後排除清單與失效設定仍要逐項驗證,任何外掛的行銷文案都不該取代你自己的驗收流程。

還有一條原則比選哪個外掛更重要:同一層的快取只交給一個擁有者。主機內建的頁面快取與外掛的頁面快取同時開著,兩邊各自保存副本、各自失效,出問題時你無法判斷訪客拿到的是誰的版本;好幾個快取外掛一起裝,也是同樣的問題。深入的功能差異與單一外掛的設定流程,WordPress 快取外掛的比較與WP Rocket 的設定細節另文展開。

把失效交給機制,清除就會從日常保養退位成維運指令

目標是讓「改了就生效」自動發生:內容發佈與更新時,自動觸發相關頁面的快取失效;靜態資源改用版本化檔名,讓瀏覽器自動取新檔;流量大的站再加速取預熱。做到這些之後,手動清除只剩兩種情境:變更後的驗證,與排查時的救急。清除是維運指令,不是保養排程。

自動失效的觸發點要對齊前面提過的三個漏點:直接改資料庫、第三方批次寫入、非標準更新路徑。標準化變更流程是解法:讓內容異動統一走會觸發失效事件的路徑,批次任務在寫入後主動呼叫清除,非標準工具至少要留下手動清除的對照清單。機制接好之後,分診表裡的症狀一就失去了日常發生的土壤,剩下的偶發案例才值得逐一追原因。

要理解全站清空的代價,看機制的後果就知道:清空的當下,所有累積的副本歸零,流量在短時間內全數回源,伺服器要重新組每一個被請求的頁面。站小時感覺不到,流量大的站等於自己給自己製造一次尖峰。清除的範圍能小就不要大:多數外掛與邊緣服務都支援依網址清除,變更三個頁面就清那三頁,不要習慣性按整站。

真的要手動清除時,順序由靠訪客的那層往回走:先用無痕視窗與強制重新整理排除瀏覽器端的變因,再清邊緣與整頁層,物件層留在尾端,因為它重建的成本最高。順序錯了容易誤判:清了源站、邊緣的副本還在,你會以為清除無效,再按一次,把無謂的回源又推高一輪。

預熱的取捨同樣是限定題:清空後把首頁、分類頁與高流量頁先重新產生副本,能讓多數訪客從一開始就命中;但全站預熱等於用自動請求把回源尖峰提前引爆,反而壓垮源站。大範圍的清除與預熱,時間要避開流量高峰,這是維運常識,不是知識難點。

上線驗收:讓三種症狀各自重現一次

設定看起來對,不等於真的對。驗收的方式,是讓分診表裡的三種症狀各自重現一次,確認處理路線真的把它們堵住了。

  1. 發佈一篇測試內容,修訂一次,用無痕視窗與手機實機分別確認前台在預期時間內出現新版。這驗的是症狀一的失效路徑。
  2. 以訪客身分完整走一次交易與會員流程:加入購物車、進到結帳頁、登入登出對照會員版面,確認畫面上不會出現他人的資料。這驗的是症狀二的排除清單。
  3. 在同一組量測條件下,對變更前後各跑一次測試:同設備、同網路、同時段,一次只改一個設定,看數據變化的方向。這驗的是症狀三的改善是否來自你動的那一層。

驗收要用訪客身分,原因很實際:你自己登入時看到的,永遠是繞過快取的正確版本,錯的副本只發生在訪客端。管理者後台看一百次,都不等於訪客的瀏覽器裡正在發生的事。

把驗收接進日常的變更節奏:新頁面先做性質判定,是公開、個人還是交易;再決定排除規則,同步到邊緣層;上線後跑一次對應的重現測試。四個動作固定下來,快取就從偶發事故的來源,變成行為可以預期的系統,而你對它的信任建立在被驗證過的行為上,不是建立在運氣上。

回到開頭的三個判斷問題:誰在看,決定內容能不能共用;會不會過期,決定效期與失效怎麼設計;瓶頸在哪一層,決定力氣該往哪裡花。快取是需要設計的規則系統,速度與正確性要一起權衡、寫進同一組規則,不是二選一。現在可以做的事很具體:打開你的快取設定,核對排除清單與失效觸發有沒有覆蓋所有變更路徑,然後用訪客身分把關鍵流程走一遍。你自己看到的結果,比任何別人給的建議都值得相信。

常見問題

清完全站快取後,網站有一陣子特別慢,是設定錯了嗎?
不是,這是副本重新累積的正常過程。清除把所有副本歸零,接下來一段時間的請求都要回到源站重新產生頁面,速度會隨著副本重建逐漸回來。若每次都很慢,該檢視的是清除的頻率與範圍是否過大,而不是設定壞掉。
快取的保存期限要設多長,有沒有判斷方式?
反著推:先問各類頁面能接受內容多舊。活動與價格頁能容忍的延遲短,期限就跟著縮短;常年不動的說明頁可以拉長。期限愈短更新愈即時,但回源也愈多,兩端要取得平衡,沒有所有網站通用的數字。
網站沒有會員或購物車,還需要設排除清單嗎?
建議還是設。站內搜尋、需要送出資料的表單回應、帶識別資訊的網址參數,都可能產生因人而異的內容。空白清單不代表安全,只代表還沒被觸發;把動態功能盤點一次,通常幾分鐘就能補齊。
無痕視窗看得到新版,一般視窗一直是舊版,是網站設定錯了嗎?
多半不是。這代表差異出在自己設備上那份近端保存的副本:無痕視窗不會沿用原本的資料,所以拿到新版,網站本身早已更新。把資源換成版本化檔名,瀏覽器之後會自動取新檔,不必每個人手動清。
主機內建快取和快取外掛同時開啟,會發生什麼事?
副本會在兩邊分別保存與失效,訪客拿到誰的版本難以預測,排查時也無法判斷問題出在哪一層。原則是同一層只留一個負責者:主機已提供頁面快取就交給主機,選擇外掛就把主機端的同類功能關閉或調成互補角色。

操作步驟

  1. 先分診,再動手遇到問題先判斷屬於哪種症狀:更新沒生效走失效路徑、個人頁資訊錯亂走排除清單、分數低迷先定位瓶頸層,不要三種情況都倒進清除這個動作裡。
  2. 依頁面性質設規則用「這份回應能不能原樣發給下一位訪客」判斷可否共用:公開內容放心保存,交易與個人狀態頁列入排除,並讓邊緣與源站兩層的規則保持一致。
  3. 把失效交給機制讓內容異動自動觸發相關副本作廢,靜態資源改用版本化檔名,手動清除只留給變更後驗證與排查救急,並以訪客身分重現三種症狀完成驗收。

Whoops 巫普斯科技有限公司

專注技術 SEO、GEO/AEO 與 AI 搜尋實務。本站文章以可驗證資料、公開來源與實作觀察整理而成。

關於 Whoops編輯守則服務內容

想把這篇的方法用在自己的站上?

SEO 健檢、GEO/AEO 引用優化、網頁設計諮詢——把文章裡的方法落地到你的網站。