Memcached 記憶體快取可以優化 WordPress 很多功能,讓你的 WordPress 變得更快,以下由WordPress教學欄位為大家介紹如何使用 Memcached 來深度優化 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中文網其他相關文章!