您好,登錄后才能下訂單哦!
使用內(nèi)存緩存優(yōu)化 WordPress 文章瀏覽統(tǒng)計(jì)效率的方法?這個(gè)問(wèn)題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見(jiàn)到的。希望通過(guò)這個(gè)問(wèn)題能讓你收獲頗深。下面是小編給大家?guī)?lái)的參考內(nèi)容,讓我們一起來(lái)看看吧!
使用內(nèi)存緩存優(yōu)化 WordPress 文章瀏覽統(tǒng)計(jì)效率。
WordPress 默認(rèn)的自定義字段緩存方式
一般的文章瀏覽統(tǒng)計(jì)插件,都是使用自定義字段來(lái)存儲(chǔ)數(shù)據(jù)的,如果服務(wù)器開(kāi)啟了 Memcached 內(nèi)存緩存,自定義字段的數(shù)據(jù)是怎么被緩存呢?WordPress 會(huì)以 $post_id 做為 cache_key,'post_meta' 作為 cache_group 整體進(jìn)行緩存。
所以更新某個(gè)自定義字段,相當(dāng)于該 $post_id 下的所有自定義字段的緩存都一起更新,而每次文章瀏覽,這個(gè)自定義字段數(shù)據(jù)都會(huì)加 1,這樣,每次自定義字段的緩存都會(huì)更新,然后就會(huì)造成每個(gè)頁(yè)面會(huì)多出三個(gè) SQL 查詢。
使用內(nèi)存緩存優(yōu)化文章瀏覽統(tǒng)計(jì)效率
有沒(méi)有辦法解決這個(gè)問(wèn)題呢?我們可以把文章的瀏覽統(tǒng)計(jì)先緩存到內(nèi)存中,每次增加10次瀏覽才寫(xiě)入數(shù)據(jù)庫(kù)中去,這樣就可以大大降低 WordPress 操作因?yàn)樽远x字段變更而造成 SQL 查詢次數(shù)。
將上面的代碼復(fù)制到當(dāng)前主題的 funtions.php 文件中:
// 更新文章瀏覽數(shù)的時(shí)候,首先更新到內(nèi)存中,然后每10次,才寫(xiě)到數(shù)據(jù)庫(kù)中 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); // 獲取文章瀏覽數(shù)的時(shí)候,首先從內(nèi)存中獲取,沒(méi)有才從數(shù)據(jù)庫(kù)中獲取 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);
另外可能存在一個(gè)小問(wèn)題:由于 Memcached 的緩存不是持久的,如果不小心把將內(nèi)存緩存的清空,文章的瀏覽數(shù)會(huì)丟失一部分,但是肯定少于10了。
WPJAM Basic 插件已經(jīng)集成了 Memcached,下載 WPJAM Basic 之后,將 wpjam-basic/template/ 目錄下的 object-cache.php 文件復(fù)制到 wp-content 目錄下即可。
感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)使用內(nèi)存緩存優(yōu)化 WordPress 文章瀏覽統(tǒng)計(jì)效率的方法大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。