問題描述
是否從數據庫中提取所有選項變量,並在每個請求上加載緩存?
最佳解決方案
是的,有的。當進行 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。