WP Super Cache

外掛說明

此外掛會從動態 WordPress 網站產生靜態 HTML 檔案。產生 HTML 檔案後,網頁伺服器將直接提供該檔案,而不需要執行相對龐大且耗費資源的 WordPress PHP 指令碼。

靜態 HTML 檔案將提供給絕大多數的使用者:

  • 未登入的使用者。
  • 未在你的網站留下留言的使用者。
  • 或是未檢視過受密碼保護文章的使用者。

99% 的訪客將取得靜態 HTML 檔案。一個快取檔案可以提供數千次。其他訪客則會取得依其造訪量身打造的自訂快取檔案。如果他們已登入或留過留言,系統就會向他們顯示這些詳細資料並為其快取。

此外掛以 3 種方式提供快取檔案 (依速度排序):

  1. 專家模式。最快速的方法是使用 Apache mod_rewrite (或網頁伺服器支援的類似模組) 提供「supercached」靜態 HTML 檔案。這會完全繞過 PHP,速度極快。如果你的伺服器遭遇大量流量衝擊,由於請求更「輕量」,因此更能從容應對。這需要 Apache mod_rewrite 模組 (如果你使用自訂永久連結,通常已經安裝),且需要修改 .htaccess 檔案,這具有風險,如果修改不正確可能會導致網站無法運作。
  2. 簡易模式。Supercache 靜態檔案可以由 PHP 提供,這是使用此外掛的推薦方式。外掛如果找到「supercached」檔案就會直接提供,其速度幾乎與 mod_rewrite 方式一樣快。由於不需要變更 .htaccess 檔案,因此設定更容易。你仍然需要自訂永久連結。在此快取模式下,你可以讓頁面的部分內容維持動態。
  3. WP-Cache 快取。這主要用於為已知使用者、帶有參數的 URL 以及網址摘要快取頁面。已知使用者是指已登入的使用者、留下留言的訪客,或是應向其顯示個別使用者自訂資料的人員。這是最具彈性的快取方式,速度稍微慢一點。如果停用了 supercache,WP-Cache 快取也會快取未知使用者的造訪。在此模式下,頁面也可以包含動態部分。此模式始終保持啟用,但你可以分別停用已知使用者、帶有參數的 URL 或網址摘要的快取。如果你只想使用 WP-Cache 快取,請在 wp-config.php 中將常數「DISABLE_SUPERCACHE」設為 1。

如果你不習慣編輯 PHP 檔案,請使用簡易模式。它設定簡單且速度極快。

建議設定

  1. 簡易快取。
  2. 壓縮頁面。
  3. 不要為已知使用者快取頁面。
  4. 重建快取。
  5. CDN 支援。
  6. 額外首頁檢查。

快取回收是指清理過期與陳舊快取檔案的動作。逾期時間沒有絕對正確的值,但 1800 秒是個不錯的起點。

請考慮刪除「拒絕的使用者代理」文字方塊中的內容,以允許搜尋引擎為你快取檔案。

盡可能預先載入越多的文章,並啟用「預先載入模式」。此時舊快取檔案的快取回收功能將會停用。如果你不在意側邊欄小工具是否頻繁更新,可將預先載入間隔設為 2880 分鐘 (2 天),這樣所有文章就不會太頻繁重新快取。當進行預先載入時,正在重新整理的文章快取檔案將被刪除並重新產生。隨後會對所有舊檔案執行快取回收以清除過期快取檔案。
即使啟用了預先載入模式,修改文章或發表留言時仍會刪除快取檔案。

開發

  • 此外掛的主動開發工作在 GitHub 上進行。
  • 此外掛多國語言的翻譯工作在翻譯頁面上進行。

說明文件

如果你需要比下列更多的資訊,可以查看 Wiki 或開發人員說明文件。

預先載入

你可以透過預先載入為網站的文章、分類與標籤產生快取檔案。預先載入會逐一造訪網站的每個頁面並隨之產生快取頁面,就像網站的任何其他訪客一樣。由於此功能的循序性質,如果文章數量較多,預先載入整個網站可能需要一些時間。
為了提高預先載入的效率,停用快取回收以避免刪除較舊的快取檔案可能會有所幫助。這可以透過在設定中啟用「預先載入模式」來完成。但請注意,頁面最終仍會過期,不過透過送出留言或編輯文章進行的更新將會清除部分快取。

快取回收

隨著時間推移,快取目錄會被填滿,佔用伺服器空間。如果空間有限或按容量計費,或者你擔心網站的快取頁面會過期,就必須執行快取回收。快取回收會定期進行並刪除快取目錄中的舊檔案。在進階設定頁面上,你可以指定:
1. 快取逾期時間。快取檔案被視為新的時間長度。在此時間之後,它們就已過期並可被刪除。
2. 排程器。設定快取回收的執行頻率。
3. 通知電子郵件。你可以收到關於快取回收工作進度的通知。
快取回收設定沒有所謂的對或錯,完全取決於你自己的網站。
如果你的網站定期更新或有留言,請將逾期時間設為 1800 秒,並將計時器設為 600 秒。
如果你的網站大部分為靜態內容,你可以輸入 0 作為逾期時間來停用快取回收,或是使用非常大的逾期時間值。

快取目錄 (通常為 wp-content/cache/) 僅供暫存檔案使用。切勿將重要檔案或指向重要檔案或目錄的符號連結放在該目錄中。若此外掛具備寫入權限,這些檔案將會被刪除。

CDN

內容傳遞網路 (CDN) 通常是分佈在世界各地的電腦網路,利用靠近你的伺服器以更快的速度提供網站內容。圖片、JavaScript 與 CSS 檔案等靜態檔案可以透過這些網路提供,藉此加快網站載入速度。你也可以使用網域的子網域來提供靜態檔案,以建立「窮人版 CDN」。

OSSDL CDN off-linker 已整合至 WP Super Cache 中以提供基本 CDN 支援。其運作方式為重寫伺服器上 wp-content 與 wp-includes 中的檔案 URL (不含 .php 檔案),使其指向不同的主機名稱。許多 CDN 支援回源擷取 (origin pull)。這表示 CDN 會在首次被請求時自動從你的伺服器下載該檔案,並在可設定的時間內持續提供該檔案,之後才會再次從伺服器下載。

請在外掛設定頁面的「CDN」分頁中設定此項。這是進階技術,需要對網頁伺服器或 CDN 的運作方式有基本了解。設定 CDN 後,請務必清除檔案快取。

REST API

現在提供了用於存取此外掛設定的 REST API 端點。你必須以具備檢視設定頁面權限的管理員使用者身分通過驗證才能使用。目前尚未有相關文件記錄,但你可以在「rest」目錄中找到處理此部分的所有程式碼。

自訂快取

現在可以使用 add_cacheaction() 函式掛鉤至快取程序。

提供三個掛鉤:

  1. 「wp_cache_get_cookies_values」- 修改 WP Cache 使用的金鑰。
  2. 「add_cacheaction」- 於 phase2 執行。允許外掛新增 WordPress 掛鉤。
  3. 「cache_admin_page」- 於管理後台頁面中執行。用來修改該頁面,例如新增設定選項。

還有一個標準 WordPress 篩選器。使用「do_createsupercache」篩選器
以自訂快取前執行的檢查。該篩選器接受一個參數:
WP-Cache 的 wp_cache_get_cookies_values() 函式輸出。

WP Super Cache 擁有自己的外掛系統,在大部分 WordPress 載入之前載入。你可以將自己的外掛放入 wp-content/plugins/wp-super-cache-plugins 目錄中,或是呼叫帶有該外掛完整路徑的 wpsc_add_plugin( ) 來新增自己的外掛。

用於識別「已知使用者」的 Cookie 可以使用 wpsc_add_cookie( ) 與 wpsc_delete_cookie( ) 進行修改。請參閱 plugins/searchengine.php 作為範例。

疑難排解

如果安裝外掛後無法正常運作,可以檢查以下幾點:

  1. wp-content 是否可由網頁伺服器寫入?
  2. 是否有 wp-content/wp-cache-config.php?如果沒有,請將檔案 wp-super-cache/wp-cache-config-sample.php 複製為 wp-content/wp-cache-config.php,並確認 WPCACHEHOME 指向正確的位置。
  3. 是否有 wp-content/advanced-cache.php?如果沒有,你必須將 wp-super-cache/advanced-cache.php 複製到 wp-content/。你必須編輯該檔案並變更路徑,使其指向 wp-super-cache 資料夾。
  4. 如果完全沒有快取頁面,請依照上述建議移除 wp-content/advanced-cache.php 並重新建立。
  5. 確認 wp-config.php 中包含下列這行,且位於「require_once(ABSPATH.’wp-settings.php’);」這行的上方:

    define( 'WP_CACHE', true );
    
  6. 再次嘗試前往 [設定] -> [WP Super Cache] 頁面並啟用快取。
  7. 查看 wp-content/cache/supercache/。那裡是否有目錄與檔案?
  8. 你的 php error_log 中是否有任何內容?
  9. 如果安裝 Super Cache 後瀏覽器一直要求你儲存檔案,你必須停用 Super Cache 壓縮。請前往 [設定] -> [WP Super Cache] 頁面並在該處停用。
  10. 檔案鎖定錯誤 (例如「failed to acquire key 0x152b: Permission denied in…」或「Page not cached by WP Super Cache. Could not get mutex lock.」) 表示你可能必須使用檔案鎖定。請編輯 wp-content/wp-cache-config.php 並取消註解「 = true」,或將 設為不同值。作為最後手段,你也可以從管理後台畫面停用檔案鎖定。
  11. 若使用粗粒度檔案鎖定,請確認 cache/wp_cache_mutex.lock 可由網頁伺服器寫入。
  12. 快取資料夾不能放在 NFS、Samba 或 NAS 共享空間上,必須位於本機磁碟上。除非快取資料夾位於本機電腦上,否則檔案鎖定與刪除過期檔案將無法正常運作。
  13. 如果 WordPress 找不到 wp-cron.php,舊快取檔案的快取回收將無法運作。請檢查 access_logs 中是否有 wp-cron.php 項目,並確認你的主機名稱能解析為網路/網際網路其他伺服器所使用的外部 IP 位址。
  14. 如果訪客透過 supercache 看到的是舊頁面,你可能缺少 Apache 模組 (如果未使用 Apache,則為對應模組)。需要 3 個模組:mod_mime、mod_headers 與 mod_expires。後兩個模組特別重要,能確保瀏覽器載入網站既有頁面的新版本。
  15. 每頁結尾都出現錯誤訊息「WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed!」。請用偏好的編輯器開啟 wp-content/advanced-cache.php 檔案。前往 wp-cache-phase1.php 的路徑是否正確?此檔案通常位於 wp-content/plugins/wp-super-cache/。如果路徑不正確,快取引擎將無法載入。
  16. 快取無法運作。重新載入時我網站上的時間戳記一直改變。請檢查 .htaccess 規則中的路徑是否與 supercache 目錄的位置相符。你可能必須寫死該路徑。請嘗試停用 supercache 模式。
  17. 如果產生了 supercache 快取檔案卻未提供,請檢查所有 wp-content/cache/supercache 資料夾 (以及 wp-content 快取與 supercache 各資料夾) 和 wp-content/cache/.htaccess 的權限。如果你的 PHP 是以不同於 Apache 的使用者身分執行且權限嚴格,Apache 可能無法讀取由 PHP 產生的快取檔案。若要修正,你必須在 wp-config.php 中加入下列這行 (加在 WP_CACHE 定義上方),然後清除快取。

    umask( 0022 );
    
  18. 如果在此外掛中啟用壓縮後瀏覽器中出現亂碼,可能表示網頁伺服器已經啟用了壓縮。在 Apache 中你必須停用 mod_deflate,或者 PHP 可能啟用了 zlib 壓縮。你可以透過三種方式停用。如果你擁有 root 存取權限,請編輯 php.ini 找到 zlib.output_compression 設定並確認其為「Off」,或是在 .htaccess 中加入這行:

    php_flag zlib.output_compression off
    

    如果這樣沒有作用,請在 wp-config.php 中加入這行:

    ini_set('zlib.output_compression', 0);
    
  19. 解除安裝後,如果同時移除了 WordPress mod_rewrite 規則,永久連結可能會失效。請前往 [設定] -> [永久連結] 頁面並重新儲存該表單以重新產生這些規則。
  20. 如果你的網站無法載入,請確認 wp-config.php 正確無誤。是否缺少 PHP 開始或結束標籤?
  21. 首頁正常,但文章與頁面出現 404?請選取自訂永久連結結構後前往 [設定] -> [永久連結] 並點擊「儲存」。你可能需要手動更新 .htaccess 檔案。
  22. 如果網站上的特定字元無法正確顯示,可能是伺服器設定不正確。你必須告知訪客使用的是哪種字元集。請前往 [設定] -> [閱讀] 並複製「頁面與網址摘要的編碼」的值。編輯包含所有 Supercache 與 WordPress 重寫規則的 .htaccess 檔案,並在最頂端加入此設定,將 CHARSET 替換為複製的值 (例如「UTF-8」)

    AddDefaultCharset CHARSET
    
  23. 每頁結尾都出現錯誤訊息「WP Super Cache is installed but broken. The constant WPCACHEHOME must be set in the file wp-config.php and point at the WP Super Cache plugin directory。」。你可以刪除 wp-content/advanced-cache.php 並重新載入外掛設定頁面,或是編輯 wp-config.php 尋找 WPCACHEHOME 並確認它指向 wp-super-cache 資料夾。這通常是 wp-content/plugins/wp-super-cache/,但你可能需要該檔案的完整路徑 (因此讓設定頁面自動修復會更簡單)。如果路徑不正確,快取引擎將無法載入。
  24. 如果伺服器因為外掛使用的號誌數量過多而遇到問題,是因為使用者使用了檔案鎖定,這是不建議的做法 (但少數使用者需要)。你可以定義常數 WPSC_DISABLE_LOCKING 來全域停用檔案鎖定,或是定義常數 WPSC_REMOVE_SEMAPHORE 以在快取每個頁面後呼叫 sem_remove(),但這似乎會給請求相同號誌的其他程序帶來問題。最好是將其停用。
  25. 如果外掛在錯誤的目錄中尋找該檔案,請在 wp-config.php 或 wp-cache-config.php 中將變數 設定為全域 .htaccess 的路徑。如果你的 WordPress 安裝方式較為特殊,可能會發生這種情況。

安裝方式

就像其他外掛一樣直接從外掛頁面安裝,但請確認你已啟用自訂永久連結。前往 [設定] -> [WP Super Cache] 的外掛設定頁面並啟用快取。

如何解除安裝 WP Super Cache

你幾乎只需要在外掛頁面上停用此外掛即可。此外掛應該會清理其建立與修改的大多數檔案,但目前尚未從 .htaccess 檔案中移除 mod_rewrite 規則。請在該檔案中尋找由 SuperCache BEGIN 與 END 標記所標註的區段。此外掛不移除這些規則是因為有些使用者也會在該區塊中新增 WordPress 規則。

手動解除安裝步驟:

  1. 在外掛設定頁面上關閉快取並清除快取。
  2. 在外掛頁面上停用此外掛。
  3. 從 wp-config.php 移除 WP_CACHE 定義。它看起來像 define( 'WP_CACHE', true );
  4. 從 .htaccess 檔案中移除 Super Cache mod_rewrite 規則。
  5. 移除檔案 wp-content/advanced-cache.php 與 wp-content/wp-cache-config.php
  6. 移除目錄 wp-content/cache/
  7. 從外掛目錄中移除 wp-super-cache 目錄。

如果所有方法都失敗且你的網站壞了

  1. 從 wp-config.php 移除 WP_CACHE 定義。它看起來像 define( 'WP_CACHE', true );
  2. 移除外掛寫入根目錄 .htaccess 檔案中的規則 (見上文)。
  3. 刪除 plugins 資料夾中的 wp-super-cache 資料夾。
  4. 可選擇刪除 advanced-cache.php、wp-cache-config.php 以及 wp-content/ 中的 cache 資料夾。

常見問題集

我要如何知道我的網站正在進行快取?

前往 [設定] -> [WP Super Cache],並在簡易設定頁面上尋找「快取測試工具」表單。點選「測試快取」,外掛將請求網站首頁兩次,並比較兩次的時間戳記以確認是否相符。

如果你想要手動檢查,請在外掛設定頁面中啟用除錯功能,並在新的瀏覽器分頁中載入記錄檔。接著在登入與未登入狀態下瀏覽你的網站,你應該會在記錄中看到活動。檢視網站上任一頁面的原始碼,初次建立頁面時,你會在原始碼結尾看到文字「Dynamic page generated in XXXX seconds.」與「Cached page generated by WP-Super-Cache on YYYY-MM-DD HH:MM:SS」。重新載入時,快取頁面會顯示相同的時間戳記,因此請等待數秒後再行檢查。
如果停用 Supercaching 並啟用了壓縮,則會加入「Compression = gzip」文字。如果停用壓縮且頁面以靜態 HTML 檔案提供,則會加入「super cache」文字。檢查快取檔案是由 PHP 指令碼還是由靜態快取提供的唯一另一種方法是查看 HTTP 標頭。PHP 快取的頁面將包含標頭「WP-Super-Cache: Served supercache file from PHP」。WPCache 快取的檔案將包含標頭「WP-Super-Cache: Served WPCache cache file」。你還應該檢查 wp-content/cache/supercache/hostname/ 快取目錄中是否有靜態快取檔案。
如果 .htaccess 檔案中遺漏了外掛規則,外掛在找到 supercache 快取頁面時會嘗試提供該頁面。發生這種情況時會加上「WP-Super-Cache: Served supercache file from PHP」標頭。
Apache 的 pagespeed 模組在測試時可能會造成問題。如果在執行快取測試工具時發現任何問題,請將其停用。

如何停用 Supercaching?

如果你只想使用 WP-Cache 引擎,請編輯 wp-config.php 或建立一個將常數「DISABLE_SUPERCACHE」設為 1 的 mu-plugin。

WP-Cache 與 Supercache 檔案比較

所有快取檔案都儲存在 wp-content/cache/supercache/HOSTNAME/ 中,其中 HOSTNAME 為你的網域名稱。檔案儲存在符合網站永久連結結構的目錄中。Supercache 檔案為 index.html 或其某種變體,取決於造訪網站的訪客類型。其他檔案名稱為 wp-cache-XXXXXXXXXXXXXXXXX.php。相關中繼資料檔案名稱以「meta」開頭。這些檔案包含關於快取檔案的資訊。這些檔案是由外掛中的「WPCache 快取」引擎所產生的。

我網站上的留言與其他動態部分會立即更新嗎?

留言會在經過審核後立即顯示,具體取決於網站擁有者的留言政策。頁面上的其他動態元素可能不會更新,除非它們是用 JavaScript、Flash、Java 或其他用戶端瀏覽器語言所撰寫。此外掛確實會產生靜態 HTML 頁面。提供這些頁面時不會執行任何 PHP。「Popularity Contest」就是無法運作的這類外掛之一。

Super Cache 壓縮會拖慢我的伺服器嗎?

不會,反而恰恰相反。Super Cache 檔案會以壓縮方式儲存,因此繁重的壓縮工作只會執行一次。這些檔案通常小得多,傳送給訪客瀏覽器的速度也比未壓縮的 HTML 快得多。因此,你的伺服器花在網路傳輸上的時間更少,能節省 CPU 時間與頻寬,也可以更快速地處理下一個請求。

如何讓頁面的特定部分維持動態?

備註:此功能預設為停用。你必須在 [進階設定] 頁面上啟用此功能。

有 2 種做法。你可以使用 JavaScript 來繪製想要維持動態的頁面部分,這就是 Google AdSense 與許多來自外部網站的小工具所採用的方式,也是推薦的做法。或者你可以使用 WP Super Cache 篩選器來達成,但就無法使用 mod_rewrite 模式快取。你必須使用「簡易」傳遞方式或停用 supercache。

WP Super Cache 1.4 引入了名為 wpsc_cachedata 的 cacheaction 篩選器。即將顯示的快取頁面會經過此篩選器,並允許修改該頁面。如果頁面包含預留位置標籤,則可以使用該篩選器將該標籤替換為動態產生的 HTML。
除非你使用 late_init 功能,否則掛鉤至 wpsc_cachedata 篩選器的函式應放在 WP Super Cache plugins 資料夾中的檔案內。其中隨附了一個外掛範例。請編輯 dynamic-cache-test.php 查看範例程式碼。
該處有兩個範例函式。一個是在提供快取頁面時替換自訂字串 (或標籤) 的簡易函式;另一個範例函式則使用輸出緩衝區來產生動態內容。由於 PHP 運作方式的限制,輸出緩衝區程式碼必須在觸發 wpsc_cachedata 篩選器之前執行 (至少在頁面進行快取時是如此)。提供快取頁面時則沒有影響。更詳細的技術說明請參閱 這篇文章。
若要執行 WordPress 函式,你必須在進階設定頁面中啟用「延後 init」功能。

如何延遲提供快取直到「init」動作觸發?

快取檔案是在幾乎所有 WordPress 載入之前提供的。雖然這對效能極佳,但當你想利用 WordPress 核心部分來擴充外掛時就會很棘手。在 [進階設定] 頁面上啟用「延後 init」模式,快取檔案就會在「init」觸發時提供。此時 WordPress 及其外掛都將載入完畢。

為什麼 WP UserOnline、Popularity Contest、WP Postratings 或某些外掛現在無法在我的網站上運作或更新?

此外掛會快取整個頁面,但有些外掛預期每次頁面載入時都會執行 PHP 程式碼。若要解決此問題,該外掛需要使用 JavaScript/AJAX 方法,或是前一個回答中說明的 wpsc_cachedata 篩選器來更新或顯示動態資訊。

為什麼升級此外掛時,我的 WP Super Cache 外掛會消失?

WordPress 在更新外掛時會刪除外掛資料夾。WP Super Cache 也是如此,因此 wp-super-cache/plugins/ 中的任何已修改檔案都會被刪除。你可以透過多種方式將自訂外掛放在不同的目錄中。你可以在 wp-config.php 或 wp-content/wp-cache-config.php 中定義變數 ,並將其指向 wp-super-cache 資料夾以外的目錄。此外掛將在該處尋找其外掛程式。或者,如果你發佈需要提前載入的外掛,可以使用函式 wpsc_add_plugin( ) 來新增外掛 (無論它位於何處)。使用 wpsc_delete_plugin( ) 可移除該外掛檔案。請參閱 #574 或關於撰寫 WP Super Cache 外掛的這篇文章。

「重建快取」功能的作用是什麼?

當訪客發表留言時,該頁面的快取檔案會被刪除,並由下一位訪客重新建立快取頁面。頁面載入需要時間,如果在這段時間內有 100 位訪客造訪會發生什麼事?由於沒有快取頁面,WordPress 會為每位使用者提供新頁面,外掛也會嘗試為這 100 位訪客各自建立快取頁面,進而對伺服器造成巨大的負載。此功能可以防止這種情況發生。發表留言時不會清除快取頁面,而是將其標記為待重建。在接下來 10 秒內造訪的下一位訪客將重新產生快取頁面,同時將舊頁面提供給其他 99 位訪客。該頁面最終由第一位訪客載入完成,快取頁面也隨之更新。詳情請參閱 這篇文章。

為什麼此外掛預設不會快取搜尋引擎機器人的請求?

這些機器人通常只會造訪每個頁面一次,如果該頁面不熱門,就沒有必要建立一個閒置在伺服器上的快取檔案。不過,你可以從 [進階設定] 頁面的「拒絕的使用者代理」中移除機器人清單,以允許快取這些造訪。

顯示的是分類頁面而不是我的首頁

極少數網站在使用下列設定時可能會發生問題:

  1. 使用靜態頁面作為首頁。
  2. 使用 /%category%/%postname%/ 永久連結結構。

有時分類頁面會被快取為網站首頁,而不是靜態頁面。我無法重現該問題,但一個簡單的解決方案是使用「簡易」模式。你也可以在 [進階設定] 頁面上啟用「額外首頁檢查」。

為什麼我會收到來自 http://ismyblogworking.com/ 關於快取的警告

「你的網站不支援用戶端快取 (對 If-modified-since 沒有 304 回應)。」
「你的網址摘要不支援快取 (對 If-modified-since 沒有 304 回應)」

Supercache 在專家模式下不支援 304 標頭檢查,但在簡易模式下支援。這是由瀏覽器進行的快取,而不是伺服器。這是瀏覽器向伺服器詢問目前頁面是否有更新版本所進行的檢查。如果沒有,就不會重新下載舊版本。該頁面仍由你的伺服器快取,只是未由訪客的瀏覽器快取。
請嘗試使用 http://www.ircache.net/cgi-bin/cacheability.py 的 Cacheability Engine 或 https://redbot.org/ 進行深入分析。

如何最好地搭配此外掛使用 Google Analytics 中的 utm_source 追蹤工具?

該追蹤會在來自 Twitter 和訂閱閱讀器等各種來源的連結 URL 中新增查詢字串。不幸的是,這會阻止頁面進行 supercache 快取。請參閱 Joost 在此的留言,以了解如何將其轉換為可進行 supercache 快取的錨點標籤。

外掛發出警告表示 wp-content 可寫入!htdocs 可寫入!

網頁伺服器可以寫入這些目錄並不是好事,但有時共享主機帳號會以這種方式設定以便管理。請使用 chmod 755 directory 來修正權限,或在 FTP 用戶端中尋找權限設定區段。這個 Google 搜尋結果將帶你前往更多關於此主題的資訊,此外還有 這個 Codex 頁面。遺憾的是,某些主機商要求這些目錄必須可寫入。若是這種情況,只要忽略此警告即可。

如何從 wp-config.php 刪除 WP_CACHE 定義?

開啟電腦上的 FTP 用戶端並連線至你的網站。瀏覽至網站根目錄 (或其子目錄),你可以在那裡找到 wp-config.php。下載該檔案並在文字編輯器中編輯。刪除 define( 'WP_CACHE', true ); 這行程式碼並儲存檔案。現在上傳該檔案,覆寫伺服器上的 wp-config.php。

如何從 .htaccess 檔案刪除 Super Cache 規則?

開啟電腦上的 FTP 用戶端並連線至你的網站。你可能需要在 FTP 用戶端的偏好設定中啟用「顯示隱藏檔案」。瀏覽至網站根目錄,你可以在該處找到 .htaccess 檔案。下載該檔案並在文字編輯器中編輯。刪除「# BEGIN WPSuperCache」與「# END WPSuperCache」之間的所有行並儲存檔案。現在上傳該檔案,覆寫伺服器上的 .htaccess 檔案。

如何變更檔案權限?

WordPress Codex 上的這個頁面說明了關於伺服器檔案權限你所需知道的一切資訊,以及變更這些權限的各種方法。

為什麼發布新文章時負載會突然飆高?

你可能設定了「發表新文章時清除所有快取檔案」選項。清除這些檔案可能需要時間,且訪客此時造訪的將是未快取的頁面。你是否在 URL 中使用帶有 utm_source 的 Google Analytics 廣告活動追蹤?這些頁面不會被快取。請參閱上方的「如何最好地搭配此外掛使用 Google Analytics 中的 utm_source 追蹤工具」問題,以了解正確的使用方式。
發表文章時必須重新整理快取頁面。也許你的伺服器無法負荷你獲得的流量。請啟用「重建快取」功能,這可能有所幫助。

我可以快取多少個頁面?

唯一的實質限制是伺服器所定義的限制。例如 EXT2 與 EXT3 最多允許 31,999 個子目錄,因此如果你使用扁平的永久連結結構 (如 /%POSTNAME%/) 且有超過 32,000 篇文章,就可能會遇到問題。同樣地,如果你運作多站網路且擁有超過 31,999 個網站 (部落格),你將無法快取所有網站。實際上,如果你有那麼多活躍網站,你也不會在單一伺服器上執行。

我發現我網站的 www 版本被獨立快取了。我要如何阻止這種情況?

WordPress 應該要重新導向至網站的標準 URL,但如果沒有,請在 Supercache 與 WordPress 規則上方的 .htaccess 中加入此內容。請將 example.com 變更為你自己的主機名稱。
RewriteCond %{HTTP_HOST} www.example.com$ [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

如何向手機與平板電腦等小螢幕的用戶端提供快取的行動版頁面?

你的佈景主題可能是自適應 (responsive) 的,這表示它會調整頁面大小以配合顯示頁面的任何裝置。如果它不是自適應的,你必須使用獨立的行動版外掛來為這些訪客轉譯特定格式的頁面。下列外掛已經過測試,但效果可能因行動用戶端而異。你還必須在 [進階設定] 頁面上啟用行動瀏覽器支援。

使用者評論

2026 年 9 月 10 日 1 則留言
Though I don't like the updated settings page (it would be better to keep it in the same style as WordPress), the caching works perfectly.
2026 年 8 月 13 日 1 則留言
Where I keep a few changes on my website, the cache checking is nice with it.
2026 年 8 月 4 日 1 則留言
Not the flashiest caching plugin around but it's been dependable for years across a few low-traffic client sites where simplicity matters more than advanced features.
2026 年 7 月 7 日 1 則留言
Been running this for over a year on a few client sites. Configuration is a bit old-school compared to newer caching plugins, but it's stable and rarely needs attention once set up.
2026 年 4 月 22 日 1 則留言
I’ve been using WP Super Cache for a while now and it has made a huge difference in my website performance. When properly configured, it turned out to be the best caching solution I’ve tried for WordPress. Page load times are significantly faster, server load is noticeably lower, and everything feels much more responsive overall. What I also really appreciate is that it’s completely free, yet still delivers performance that easily competes with many paid caching plugins. In my experience, it’s one of the most reliable and efficient caching systems available for WordPress. If set up correctly, WP Super Cache can seriously improve both speed and stability — definitely worth using.

ok

2026 年 3 月 9 日 3 則留言
ok
閱讀全部 1,346 則使用者評論

參與者及開發者

以下人員參與了開源軟體〈WP Super Cache〉的開發相關工作。

參與者

〈WP Super Cache〉外掛目前已有 34 個本地化語言版本。 感謝全部譯者為這個外掛做出的貢獻。

將〈WP Super Cache〉外掛本地化為台灣繁體中文版

對開發相關資訊感興趣?

任何人均可瀏覽程式碼、查看 SVN 存放庫,或透過 RSS 訂閱開發記錄。

變更記錄

3.1.3 – 2026-08-26

  • 修正:以反斜線結尾的直接頁面路徑不再破壞快取設定檔。
  • 修正:清理 CDN URL 與 CNAME 設定,使包含引號或角括號的值不再破壞其所代入的資產 URL。
  • 修正:對寫入快取設定檔的字串設定進行逸出處理,使包含引號或反斜線的值不再損毀設定檔。
  • 修正:名為「0」的 Cookie 可能會讓已登入訪客在快取中看似匿名,導致其專屬頁面被提供給所有人。

3.1.2 – 2026-08-19

  • 修正:當請求 URL 過長而無法建立快取目錄時,不再讓錯誤記錄充斥路徑長度警告。
  • 修正:清除代稱包含非 ASCII 字元的分類、標籤與彙整頁面的快取。先前「刪除快取」按鈕也無法清除這些頁面,現在已經可以。
  • 修正:儲存代稱包含非 ASCII 字元的文章時能正確清除快取。
  • 已移除 Bad Behavior 外掛整合。上游外掛已不再維護,且長期存在的反轉保護機制導致該整合實際上從未執行。
  • 修正:在編輯文章後清除快取時忽略 ID 為 0 的文章,該問題先前可能會意外刪除首頁快取。
  • 將 wp-cache.php 依職責拆分為 inc/ 檔案 (#1061) (#1065)
  • 修正:快取現代安全性標頭 (包括 Permissions-Policy、Cross-Origin-Opener/Embedder/Resource-Policy 系列以及其餘的 CORS 標頭),使其能在快取回應中一併傳送。
  • 修正:遵循 Accept 標頭中的品質值,讓在 HTML 之後列出 JSON 的監控工具與瀏覽器能取得快取頁面,而不需要在每次請求時重建。
  • 修正:在 REST 與 Ajax 回應中隱藏除錯 HTML 註解 (#1021)

3.1.1 – 2026-05-27

  • 安全性:強化 supercache 檔案名稱的產生邏輯,使來自請求的資料無法逸出快取目錄。
  • 修正:避免在純 supercache 模式下關閉未開啟的檔案控制代碼時於 PHP 8+ 發生嚴重錯誤。
  • 修正:在 wp_cache_clear_cache() 中將網站 ID 進行型別轉換,讓非整數的呼叫者不再於單一網站安裝中觸發僅適用於多站網路的函式。
  • 修正:不再將 HTML 除錯註解附加至 REST API、Ajax、JSON、WooCommerce API 與 XML-RPC 回應中。
  • 修正:避免在快取清除常式執行前留言已被刪除時產生 PHP 警告。

3.1.0 – 2026-04-14

  • 停用 wp_die() 錯誤頁面的快取
  • 透過多種方式強化外掛安全性。
  • 修正:使用 fileperms() 取代 stat() 並修正逸出處理
  • 新增 WordPress.org 即時預覽藍圖。
  • 最低 WordPress 版本提升至 6.8。
  • 裝置偵測:使用內嵌版本取代 Composer 相依性。
  • 修正:PHP 8.1+ 上的 str_starts_with() null 棄用警告。
  • 修正:處理 supercache_last_cached 選項的陣列類型。