溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用內(nèi)存緩存優(yōu)化 WordPress 文章瀏覽統(tǒng)計(jì)效率的方法

發(fā)布時(shí)間:2020-10-13 15:06:12 來(lái)源:億速云 閱讀:96 作者:小新 欄目:建站服務(wù)器

使用內(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è)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI