若您使用 WP Rocket 緩存擴展套件,並透過 API 發文時,可能會遇到自動清除緩存導致高 CPU 負載的問題。然而,透過在 WordPress 的 functions.php 檔案中加入一段程式碼,即可解決這個問題。本篇文章將提供一個可能的解決方案,以及如何檢查是否成功禁止清除緩存。現在您可以輕鬆解決 WP Rocket 在使用 API 發文時清除緩存的問題,省去不必要的煩惱!

可能的情況

假如你是一個網站開發人員,正在製作一個小說網站,每當你采集一篇新的小說時,你也會向 WordPress 發送一次請求。如果你使用了 WP-Rocket 緩存插件,每次請求都會自動清理緩存並重新生成預緩存頁面。這個過程可能會占用大量的 CPU 資源,導致 CPU 跑滿100%。如果服務器上還有其他網站正在運行,那麼結果就可能是文章發不出去。

解決方案

可以透過在 WordPress 主題中的 functions.php 檔案中新增程式碼,來阻止在使用 API 發文時清除 WP Rocket 緩存。

function disable_wp_rocket_purge_on_api_post() {
    if (defined('REST_REQUEST') && REST_REQUEST) {
        remove_action('save_post', 'rocket_clean_domain', 99);
    }
}
add_action('init', 'disable_wp_rocket_purge_on_api_post');

這個代碼會在 REST API 的 POST 請求時,從 save_post action 移除 rocket_clean_domain 函式。這樣就可以避免在使用 API 發文時清除 WP Rocket 緩存。

請注意,在修改 functions.php 檔案前,請先備份檔案,以避免意外的錯誤,或者將代碼新增到子主題的funcation.php中。

假設你有一個api.php文件,只要在 api.php 中調用了 wp_insert_post(),就會觸發 save_post action,然後就可以透過 disable_wp_rocket_purge_on_api_post() 函式來阻止 WP Rocket 在使用 API 發文時清除緩存。

這樣一來,在你的 api.php 文件中使用 wp_insert_post() 時就不會清除 WP Rocket 緩存了。

如何驗證?

你可以在發佈文章前先檢查 WP Rocket 緩存是否已經生成。發佈文章後,可以再檢查一次 WP Rocket 緩存是否還存在。如果緩存還在,那麼就表示已經成功禁止了在使用 API 發文時清除緩存。如果緩存被刪除了,那麼就可能是禁止清除緩存的程式碼沒有生效。

聲明:本站所有文章,如無特殊說明或標註,均為本站原創發布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發布本站內容到任何網站、書籍等各類媒體平臺。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。