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