[WordPress] KUSANAGIのbcacheとfcacheの使い分け

2018/05/15WordPress

このサイトではWordpressの高速化手段としてKUSANAGIを利用している。お手軽に高速化できる手段として、あちこちのレンタルサーバーでも使われている構成だ。



KUSANAGIは高速化の手段としてキャッシュも利用している。Wordpressは重たいCMSなので、キャッシュの効果は絶大だ。このサイトの場合、キャッシュなしでは数100msかかる処理が、キャッシュヒットした場合は0ms-10msで処理が完了する。

でも、なぜ bcache と fcache の2つあるのだろうか? 設定はどう使い分ければ良いのだろう?

動作の説明

fcacheはnginx、bcacheはWordpressプラグインがキャッシュ動作を行います。fcacheはWordpressの起動処理が不要なので、高速に応答を返せます。



できるだけfcacheにヒットさせた方が、応答時間は短くなります。このサイトの場合は、fcacheヒット時:10ms、bcacheヒット時:100ms、キャッシュミス時:数100msの応答時間がかかります。Webページの表示速度は2秒以下が目標ですから、ページ生成に数百ミリかかるのは遅すぎます。なるべくキャッシュにヒットさせたいものです。

bcacheの必要性

上記の動作からはfcacheがあればbcacheは不要に思えますが、そうではありません。fcacheはWordpressとは独立にキャッシュを行うので、細かい操作が行えません。

bcacheなら公開するページの種別ごとにキャッシュ保持時間を指定できますし、


ページを公開・更新したタイミングで関連するページのキャッシュをクリアすることもできます。


fcacheでもサーバーにログインしてCLI操作をすることでキャッシュの個別クリアは行えますが、bcacheほど簡単ではありません。

キャッシュ保持時間の考え方

このサイトは右側(スマホでは下側)に新着記事を表示しています。記事が追加される場合は全てのキャッシュをクリアしないと整合性が取れません。しかし1日に何度も記事を投稿するサイトで全クリアを選ぶと、頻繁にキャッシュがクリアされ非効率です。キャッシュの保持時間を短めにしておいて、その間の不整合は許容する(見なかったことにする)設定も考えられます。

人気記事も同様です。キャッシュヒットすると古い人気記事が表示される可能性があります。毎時間ごとに人気記事を集計するのであれば、キャッシュ時間も1時間以下にする必要があります。

また、多くのサイトでは、特定のページが頻繁にアクセスされ、その他のページにはわずかなアクセスしかありません。頻繁にアクセスされるページはキャッシュが有効に動作しますが、その他のページはキャッシュが無駄になることも多いです。できるだけキャッシュにヒットさせるには、キャッシュ保持時間を長くする必要があります。例えば1時間に1回程度しかアクセスされないページもキャッシュしたいなら、キャッシュ保持時間は数時間程度は必要でしょう。

KUSANAGIのキャッシュ保持時間

KUSANAGIインストール後の初期値は fcacheが10分、bcacheが60分(記事詳細は360分)になっています。fcacheの設定は私のサイトでは短すぎて、一部の人気記事を除いてはキャッシュが効きません。アクセス数の少ないサイトでは、fcacheは記事に人気がでて瞬間的にアクセス数が多くなったときだけ有効だと割り切った方が良いでしょう。

bcache記事詳細は6時間キャッシュしてくれるのですが、こちらは私のサイトには少々長すぎます。

この辺りはWebサイトごとにアクセスパターンが異なりますので、個別に調整が必要でしょう。このサイトでは fcache 20分、bcache 記事詳細は3時間の設定にしています。これでもアクセス数の少ないブログでは、どちらのキャッシュにもヒットしないことが多々あります。キャッシュの生存時間を気にするよりも、人気があるような記事を書くのが先かもしれません。

WordPress

Posted by ず@沖縄