はじめまして。サイト構築の際にこちらのフォーラムを参考にさせて頂きました。
NP_MobileWithSinglePage1.5を使用し、PCとケータイ端末でスキンを切り替えて運用しています。
先日、急激にアクセスが集中してデータベースの負荷が高くなった事からNP_EzCacheをほぼ全てのページに導入したのですが、何日か運用して気付いた事があります。
ケータイからのアクセスでNP_EzCacheがキャッシュを生成した場合、PCで同じページを表示するとケータイ用のスキンで表示され、また逆にPCでキャッシュを生成した場合も、ケータイ側ではPC用スキンで表示されてしまうようです。
PCに比べてケータイからのアクセスはそれほど多くないためキャッシュは効かなくても良いのですが、何かこの状態を打開する方法はありますでしょうか?
よろしくお願いします。
オフライン
ここにあるとおり、
http://niku.suku.name/item/501
現時点では仕様のようです。
ここと、その下の記事にあるとおり、EzCache側の改造で出来るのかもしれませんが試していません。
<!-- l --><a class="postlink-local" href="http://japan.nucleuscms.org/bb/viewtopic.php?p=17886#17886">viewtopic.php?p=17886#17886</a><!-- l -->
オフライン
EzCacheの中を次のように書き換えてみてください
function event_InitSkinParse(&$data) {
global $member, $blog;
if ($member->isloggedin()) return;
if ($blog && ($data['skin']->id != $blog->settings['bskin'])) return;
これでEzCacheがプラグインリストの中でMobileWithSinglePageより下にあればいいと思います。
オフライン
返信が遅くなりました。みなさんありがとうございます。
>cha_cyaさん
フォーラムの中は検索したつもりでいたのですが、該当記事が見つからなかったのでみなさんどうにかして解決しているものと勘違いしていました。次にフォーラムにお世話になる場合はもっと調べてからにします。
>Andyさん
教えていただいた通り、
function event_InitSkinParse(&$data) {
global $member;
if ($member->isloggedin()) return;
の部分を
function event_InitSkinParse(&$data) {
global $member, $blog;
if ($member->isloggedin()) return;
if ($blog && ($data['skin']->id != $blog->settings['bskin'])) return;
に書き換えて、プラグインリストの順番を確認しました。EzCacheはリストの一番下にあります。
PCではPCの、ケータイではケータイのスキンでそれぞれ表示するようになりましたが、効果を確認するために「Show Cache」ボタンを押しても空白のウインドウが出るだけになってしまいました。
試しにphpMyAdminでデータベースを覗いてみると、EzCache用のテーブルは空のままです。
これはキャッシュが効いていないんじゃないかと思うのですが、私の書き換え方が間違っているのでしょうか。
よろしくお願いします。
オフライン
ごめんなさい
if ($blog && ($data['skin']->id != $blog->settings['bdefskin'])) return;
でした。'bskin'→'bdefskin'
オフライン
「bdefskin」に書き換えたらきちんと動作するようになりました。
Andyさん本当にありがとうございました。
オフライン