若您使用 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 發文時清除緩存。如果緩存被刪除了,那麼就可能是禁止清除緩存的程式碼沒有生效。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。