問題描述

是否從資料庫中提取所有選項變數,並在每個請求上載入快取?

最佳解決方案

是的,有的。當進行 get_option 呼叫時,WordPress 將執行一個名為 wp_load_alloptions 的函式,該函式可以獲取所有自動載入選項的快取副本,也可以將所有這些選項載入到快取中。然後 wp_load_alloptions 返回所有自動載入選項的陣列。如果您的選項是自動載入的 (在使用 add_option 功能時指定),它將成為此陣列的一部分並返回。

如果您的選項不是自動載入的,WordPress 則會專門針對該選項檢視快取,並返回該值。如果沒有,最後的回退是去資料庫,獲取值,設定快取然後返回。

最後,如果沒有找到任何選項 (例如,選項名稱無效),WordPress 將該選項的名稱儲存在名為 notoptions 的快取陣列中。如果對 non-option 進行後續呼叫,WP 將首先檢查 notoptions 陣列,這樣就不會浪費時間檢查那些不在的內容。

如果您擔心每次載入多次呼叫 get_option,請不要。 WordPress 將在第一個 get_option 呼叫後快取選項值,無論其是否自動載入。

檢視 get_option 的來源,看看發生了什麼。

次佳解決方案

沒有,

只有專門載入 autoload 的選項設定為 true

http://codex.wordpress.org/Function_Reference/add_option

因此,如果它是每個頁面上需要的選項,當將其新增到資料庫時,請設定 autoload = true 。

之後,只要使用 get_option,wp 就會處理快取等

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。