WordPress開啟Redis緩存後針對手機和PC分別進行緩存

WordPress開啟Redis緩存後瀏覽速度大幅提升,本博在上一篇文章也提到了如何開啟redis緩存詳見下方鏈接:


但是在開啟緩存後,多少會有些bug出現,比如主題大量使用了wp_is_mobile()函數來做判斷對手機和pc的界面進行區分的話,bug就更為明顯了,具體bug本次不在進行重現,有很多。

那麼如何解決這樣的問題呢?

博主另闢蹊徑,找到了解決方案——對PC訪問和手機訪問分開來進行緩存,然後根據訪問者是否為移動設備來讀取不同的緩存。實現方法很簡單,只需簡單修改index-with-redis.php文件,具體修改如下:

首先加入判斷是否為手機設備訪問的判斷函數,這裡直接引用了wp自帶的判斷函數,僅僅修改了函數名:

/*判斷移動瀏覽器*/
function redis_is_mobile(){
static $is_mobile;
if( isset($is_mobile))
return $is_mobile;
if( empty($_SERVER['HTTP_USER_AGENT'])){
$is_mobile =false;
}
else if ( strpos($_SERVER['HTTP_USER_AGENT'],'Mobile')!==false
|| strpos($_SERVER['HTTP_USER_AGENT'],'Android')!==false
|| strpos($_SERVER['HTTP_USER_AGENT'],'Silk/')!==false
|| strpos($_SERVER['HTTP_USER_AGENT'],'Kindle')!==false
|| strpos($_SERVER['HTTP_USER_AGENT'],'BlackBerry')!==false
|| strpos($_SERVER['HTTP_USER_AGENT'],'Opera Mini')!==false){
$is_mobile =true;
}else{

$is_mobile =false;
}
return $is_mobile;
}

將本段代碼寫到index-with-redis.php的尾部,當然其他位置也可以。

然後在修改

$dkey = md5($domain);
$ukey = md5($url);

為:

if(!redis_is_mobile()){
$dkey = md5($domain);
$ukey = md5($url);
}elseif(redis_is_mobile()){
$dkey = md5($domain.'+mobile');
$ukey = md5($url.'+mobile');
}

保存即可,然後就試試吧,看看是不是已經解決了手機和pc分開緩存的問題?


分享到:


相關文章: