首頁  >  文章  >  CMS教程  >  使用記憶體快取優化 WordPress 文章瀏覽統計效率

使用記憶體快取優化 WordPress 文章瀏覽統計效率

藏色散人
藏色散人轉載
2019-09-24 10:05:302764瀏覽

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 目錄下方即可。

以上是使用記憶體快取優化 WordPress 文章瀏覽統計效率的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:wpjam.com。如有侵權,請聯絡admin@php.cn刪除