使用內存緩存優化 WordPress 文章瀏覽統計效率

memcached 內存緩存可以優化 wordpress 很多功能,讓你的 WordPress 變得更快,下面由wordpress教程欄目為大家介紹如何使用 memcached 來深度優化 wordpress。

使用內存緩存優化 WordPress 文章瀏覽統計效率

?

使用內存緩存優化 WordPress 文章瀏覽統計效率。

WordPress 默認的自定義字段緩存方式

一般的文章瀏覽統計插件,都是使用自定義字段來存儲數據的,如果服務器開啟了 Memcached 內存緩存,自定義字段的數據是怎么被緩存呢?WordPress 會以 $post_id 做為 cache_key,’post_meta’ 作為 cache_group 整體進行緩存。

所以更新某個自定義字段,相當于該 $post_id 下的所有自定義字段的緩存都一起更新,而每次文章瀏覽,這個自定義字段數據都會加 1,這樣,每次自定義字段的緩存都會更新,然后就會造成每個頁面會多出三個 sql 查詢。

使用內存緩存優化文章瀏覽統計效率

有沒有辦法解決這個問題呢?我們可以把文章的瀏覽統計先緩存到內存中,每次增加10次瀏覽才寫入數據庫中去,這樣就可以大大降低 WordPress 操作因為自定義字段變更而造成 SQL 查詢次數。

將上面的代碼復制到當前主題的 funtions.php 文件中:

//?更新文章瀏覽數的時候,首先更新到內存中,然后每10次,才寫到數據庫中 add_filter('update_post_metadata',?function($check,?$post_id,?$meta_key,?$meta_value){ if($meta_key?==?'views'){ if($meta_value?%?10?!=?0){ $check=?true; wp_cache_set($post_id,?$meta_value,?'views'); }else{ wp_cache_delete($post_id,?'views'); } } return?$check; },?1,?4); //?獲取文章瀏覽數的時候,首先從內存中獲取,沒有才從數據庫中獲取 add_filter('get_post_metadata',?function($pre,?$post_id,?$meta_key){ if($meta_key?==?'views'){ $views=?wp_cache_get($post_id,?'views'); if($views?!==?false){ return?[$views]; } } return?$pre; },?1,?3);

另外可能存在一個小問題:由于 Memcached 的緩存不是持久的,如果不小心把將內存緩存的清空,文章的瀏覽數會丟失一部分,但是肯定少于10了。?

WPJAM Basic 插件已經集成了 Memcached,下載 WPJAM Basic 之后,將 wpjam-basic/template/ 目錄下的 Object-cache.php 文件復制到 wp-content 目錄下即可。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享