Sentry高速化:サーバーの応答時間を激減させるWordPress Popular Postsの設定方法

Sentry speed

WordPressのテーマ「Sentry」は、元々、私が運用しているいくつかのサイトを効率よく更新していくためにベースのテーマとして作成したテーマでした。
そんな、サイト群が最近ことごとく“遅い”と言われるように…。
「Sentryってもしかして遅いのか?」
そんなことを疑いながらいろいろと調査してみたところ、一番のボトルネックがサーバー応答時間。そして、サーバー応答時間が長くなっていた原因が、Sentryで推奨しているプラグイン「Wordpress Popular Posts」にあることがわかりました。

今後のSentryアップデートの目標の1つとして「Sentry高速化」は最重要テーマとして位置付けています。
そういう意味で、現状のSentryはまだまだ遅いんですが、手っ取り早く高速化する意味で「Wordpress Popular Posts」の設定を見直してみるというのは、かなり有効でした!

まずは、サーバーの応答時間が遅くなっていないか?を確認してみましょう!

今回、Wordpress Popular Postsの影響で遅くなるのは、サーバーの応答時間のところ。
まずは、ご自分のサイトでサーバーの応答時間が遅くなっていないかをチェックしてみましょう。

PageSpeed Insightsで確認する

一番手っ取り早いのは、Googleが提供している「PageSpeed Insights」というツールを使って確認する方法。
確認したいサイトのURLを打ち込むだけで、サイトを遅くしている要素をチェックすることができます。

Sentry speed 01
PageSpeed Insightsでは、様々な観点で最適化の提案をしてくれますが、ここにサーバーの応答時間を短縮するという提案が出ていれば、Wordpress Popular Postsの設定を見直すことで速度が改善する可能性があります。

ChromeのDevToolで確認する

また、ChromeのDevToolsを使える人は、DevToolsでより詳しく確認することもできます。

DevToolsは、Chromeで「表示」→「開発/管理」→「デベロッパーツール」と選択することで起動できます。
※詳しくは→Chrome DevTools  |  Tools for Web Developers  |  Google Developers
※SafariのWebインスペクタなどでも確認することができます。

DevToolsを開いたらNetworkのタブをチェック。
確認しているファイル名そのものが最初にロードされると思いますが、その時間をチェックしてみてください。
Sentry speed 02
▲こちらの例だと、ファイルサイズが154KBしかないのに、4.78秒も読み込み時間がかかっています。4.78秒!遅いなんてもんじゃないです。最終的にページ表示に9秒近くかかっていました…。

さらにファイル名をクリックすると、詳細を確認することもできます。
ここでサーバーの応答時間に当たる「Waiting(TTFB)」の値が長ければ、Wordpress Popular Postsの設定を見直すことで速度が改善する可能性があります。
Sentry speed 03
▲先程の例。リクエストの送信やファイルのダウンロードは数ミリ秒で、やはりほとんどはサーバーの応答時間にかかっていました。改めて4.78秒て!!

というわけで、上記の確認でサーバーの応答時間に異常な時間がかかっていることがわかった場合は、Wordpress Popular Postsの設定を見直してみましょう。

サイト高速化のためのWordpress Popular Postsの設定

WordPress Popular Postsの設定で見直すべきポイントは以下の2箇所。
それぞれ、設定を変更することによるデメリットもあるので、理解した上で設定をするように気をつけてください!

「キャッシュ」を利用する

まず1つ目は、Wordpress Popular Postsの表示にキャッシュを使うための設定です。

サーバーの応答時間が長くなっている原因は、アクセスの度にWordpress Popular Postsのランキングデータをサーバーで作成しているから。
キャッシュを使うことで、毎回ランキングを作成するのではなく、一度作成したランキングデータを”キャッシュ”として再利用するため、ランキングを高速で表示することが出来ます。

「キャッシュ」を使うデメリットは?

キャッシュを使うことによるデメリットは、ランキングがリアルタイムに更新されないことです。
例えばキャッシュ更新間隔を1時間で設定すると、同じランキングが1時間表示され続けることになるので、リアルタイムでランキングを表示したいサイトの場合は問題になります。
更新したての記事を、すぐにランキング上位に表示させたい場合なども、キャッシュが更新されるまでは待つ必要が出てきますね。

このあたり、サイト高速化ランキングの鮮度のバランスを見ながら、キャッシュの更新間隔を設定してみてください。
(※よくわからない場合は、とりあえず1時間とかで設定してみて様子を見るのがよいかもしれませんね。)

WordPress Popular Postsのキャッシュを設定する方法

WordPressの管理画面から「設定」→「Wordpress Popular Posts」を選択。
「WPPキャッシュ期限ポリシー」の項目で「キャッシュする」を選択し、キャッシュ更新間隔も上記のデメリットを理解したうえで適正な期間を指定してください。

Sentry speed 04

データをサンプリングする

2つ目は、ランキング生成のために収集しているログデータを、全てのアクセスで取得するのではなく、一部のアクセスのみに減らす方法です。

こちらは、ログデータをデータベースへ保存するといった処理が軽くなることに加え、ログデータの数自体が減ることで、ランキングデータを生成する時間を短縮することができます。
1つ目に紹介したキャッシュを使う方法ではほとんどのアクセス時にキャッシュを使うことで表示が高速になりますが、キャッシュがない状態では今まで通りサーバの応答時間がかかります。
ログデータが減ることで、このランキング生成期間を減らすこともできるわけです。

サンプリングによるデメリットは?

これは、サンプリングという方法自体の持つデメリットと言えますが、実際のアクセスデータを全て記録するわけではないので“誤差”が生じてしまいます。
とは言え、ある程度のアクセスがあるサイトであれば、サンプリングする元のアクセスが膨大なので誤差はかなり小さくなってきます。
このあたりは、TVの視聴率なんかの仕組みと同じで、ある程度大きな母集団であれば、比率としてはかなり小さい数であっても、サンプリングデータはかなり正確になります。

ただ、アクセスがあまり大きくないサイトの場合は、サンプリングの比率を減らす「サンプル率」の設定項目も用意されています。
まずはデフォルトの100で試してみて、生成されるランキングがあまりにおかしいと感じる場合には、サンプル率を減らしてみてください。

WordPress Popular Postsのサンプリングを設定する方法

WOrdpressの管理画面から「設定」→「Wordpress Popular Posts」を選択。
「データサンプリング」の項目で有効を選択します。
一度保存すると「サンプル率」の項目が追加されるので、ランキングデータにおかしいところがあればサンプル率を少し減らして様子を見てみましょう。
Sentry speed 05

トータルのランキングを利用していなければ、ログ上限を設定することも

その他の設定として、ログの保存期間を変更する「ログ上限」という項目もあります。
Sentryはオリジナルのサイドバー用ウィジェットで、タブ切り替えのランキングウィジェットが用意されています。
こちらでは、トータルの記事ランキングを生成するため、過去のログがすべて必要になってしまいます。

ただ、このウィジェットを使わないで、日別、週別、月別といった期間縛りのランキングだけしか必要がないという場合は、ログの保存期間を必要な部分だけに絞って、残りを破棄することもできます。
ログの数が減れば、やはりサーバーでの処理時間は大きく減らすことが出来ます。


以上が、サイトを高速化するためのWordpress Popular Postsの設定方法です。
もちろん、これが全てのサーバー応答時間の内訳ではなく、アクセスの少ないサイトや公開期間がまだ短いサイトではあまり大きな効果は期待できないかもしれません。
ただ、2年半ほど公開していて、月間20万〜30万PVくらいのサイト(上記でサーバ応答に4.78秒かかっていたページのサイト)では、はっきりと体感できるレベルでサイトが高速化しました!

Sentry speed 06
4.78秒のサーバー応答時間は754.15msへ!これではまだ”高速”と言えるレベルのサーバー応答時間ではないですが、まずは大きな一歩です!

Sentryは今後も高速化を目指して改善していきますが、まずは手っ取り早くサイトを高速化できる方法として、Wordpress Popular Postsの設定を見直してみてください!