您好,登錄后才能下訂單哦!
這篇文章主要介紹如何使用WordPress對象緩存,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
要深度理解 WordPress 優化,必須要首先了解 WordPress 對象緩存 機制。
WordPress 對象緩存機制和服務器設置
WordPress Object Cache(WordPress 對象緩存)是 WordPress 的緩存機制,它的主要功能是把負責查詢或者運算的結果按照 Key-Value 這樣的方式(WordPress 還支持按照 Group 來劃分和避免緩存的內容沖突)存儲到對象里面,下次進行同樣操作的時候,可以讓直接從這個對象中取出數據,不用重復到數據庫中或者其他外部網站獲取數據。
WordPress Object Cache 和服務器設置關系很大,如果系統開啟了 Memcached 內存緩存,則這個對象是直接存入到內存,在數據未過期之前,以后再次讀取這個數據都是直接從內存中讀取的,這樣效率和速度都非常快的。
如果服務器不支持內存緩存的話,則只能保證在當前頁面下同樣的查詢或者操作不再重復從數據庫中讀取了。
WordPress 對象緩存的函數
使用 WordPress 對象緩存技術其實是非常簡單的:
使用 wp_cache_add() 把數據添加到緩存中。
使用 wp_cache_set() 把數據設置到緩存中。
使用 wp_cache_get() 到緩存中讀取數據。
使用 wp_cache_delete() 刪除緩存中的數據。
這些函數會涉及到的四個參數:
參數
$key 對象的 key。
$data 要存的值。
$group 分組,可選參數,用來把緩存對象就行分組。
$expire 過期時間,可選參數,如果是默認緩存,這個參數沒用,如果是內存緩存,是設置緩存的時間,單位是秒,默認為0(0的意思就是永遠,不會自動過期)。
使用 WordPress 對象緩存
下面以我即將更新 WordPress 相關文章插件為例,講講如何使用 WordPress 對象緩存:
我們知道 WordPress 相關文章插件是通過 tag 和分類來獲取相關文章,相同的 tag 和分類越多,相關性越強,這樣就需要進行多個表聯合查詢來獲取相關文章,這樣效率其實是比較差的。但是一個文章它的相關文章一段時間內是不會變動的,所以我們就可以使用 WordPress 對象緩存對相關文章進行加速。
下面是把把相關文章的數據寫入緩存的例子,使用當前 post_id 作為 key,related_posts 作為 group,緩存時間為一個小時,即 3600 秒。
global $post; $related_posts_data = wp_get_related_posts(); wp_cache_set($post->ID,$related_posts_data,'related_posts',3600);
上面只是把數據存到緩存對象中,我們在顯示相關文章的時候,就要去調用這個對象緩存來使用,首先檢查下是否已經有了緩存,如果你要的信息沒有在緩存中,或者已經過期了。wp_cache_get() 會返回 false,如果這樣,你就要去數據庫中重新獲取這些信息。否則就返回在緩存中的信息。
global $post; $related_posts_data = wp_cache_get($post->ID,'related_posts'); if(false === $related_posts_data){ $related_posts_data = wp_get_related_posts(); wp_cache_set($post->ID,$related_posts_data,'related_posts',3600); } echo $related_posts_data;
因為設置了一個小時,相關文章的數據就失效,這里一般就無需更新緩存了,如果你在后臺更改了設置,需要立即清理緩存,可以使用 wp_cache_delete 進行清理:
wp_cacache_delete($post->ID,'related_posts');
WPJAM Basic 插件已經集成了 Memcached,下載 WPJAM Basic 之后,將 wpjam-basic/template/ 目錄下的 object-cache.php 文件復制到 wp-content 目錄下即可。
以上是如何使用WordPress對象緩存的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。