脱WordPress Popular PostsのためにやったことPV取得と人気記事~MixHost奮闘13

便利だけど、負荷が高くて有名なプラグインに「WordPress Popular Posts」があります。
これはサーバー運営会社にとっては当たり前すぎるようで、WordPress運営に不具合が生じたときには、WordPress Popular Postsの停止を提案されることが多いです。

MixHostで運用するにあたって、このWordPress Popular Postsをどうやって使用停止しようとかいろいろとやったことをまとめます。
※ 素人意見ですから、きちんと調べてくださいね



1.WordPress Popular Postsが負荷が高い理由

WordPress Popular Postsがどうして悪名高いかというと、ページにアクセスがある度にサーバーのデーターベースにアクセスするからだそうです。
記事数とアクセスが増えていくと、どんどんデータベース負荷が向上する仕組みです。
データも1日、1週間、1ヶ月、全期間などの単位で集計しているようですから、集計が細かいほど負担も多いと読み替えるといいですね。

WordPressの運用が長くなるほど、プラグインは増えるし、いろんな機能も入れ込んでしまい、データも増えて、アクセスも増えて・・・。
これを繰り返すことで、サーバーのリソースを食っていき、ある日、突然ブログが重いならいいですが、「新規記事が作成できない・・・」となってパニックです。
この段階では原因が特定できないことも多くて、途方に暮れるわけです。

サーバー側の認識としては、WordPress Popular Postsがデータベースアクセスが頻繁で負荷が高いとなるわけですね。
ユーザー側としては「今まで普通に使えてきたのに・・・信じられるか!」と反発をするでしょうし、お問い合わせをしないユーザーは、今まで使えてきたWordPress Popular Postsが原因とは考えないでしょう。

こうしたことがあるのが、WordPress Popular Postsなのかもしれません。



2.WordPress Popular Postsがやめられない理由

WordPress Popular Postsが高負荷であってもやめられないのは、高機能だからです。

・人気記事ウィジェットが便利
・簡単に管理、運用できる
・Simplicityだと標準で各記事に1日、1週間、1ヶ月、全期間のPVが表示される

という感じで、WordPress Popular Postsがあるおかげで、データの見える化ができます。
そのデータを取るのがとても高負荷であるわけですが。

この便利さを知ってしまうとやめられなくなるわけです。
ハイリスク・ハイリターンなのかもしれませんね。



3.負荷が低いやり方とは?

では、どうやったら負荷を下げることができるかです。
それは、そういうものを設置しないか、他サーバーで処理するサービスを使うか、負荷の少ないプラグインを使うかです。

他サーバーで処理することに関しては、人気記事の表示を「Simple GA Ranking」でやる方法を提案していただきました。
これはGoogle Analyticsのデータを元に人気記事を表示するプラグインになります。
データの解析保管などはGoogleがしているわけで、そこからデータを拾うのでほとんど負荷がありません

公式プラグインであるJetpackのサイト統計情報は、なんとJetpackのサーバーを使用しているからレンタルサーバーに負荷を与えないそうです。
公式であるために将来的にも定期的にアップデートされると思いますし、安定性が期待できます。

こうした外部サーバーを利用するのが一つの手です。
ブログに設置しているアクセスカウンターはFC2を利用しており、これも外部サーバーですね。

あとは、サポートさんが言うには、WP-PostViewsはそこまで負荷が高くないそうで、負荷の少ないプラグインを使用するか。
ただ、このプラグインもデータベースにアクセスをするので、アクセス数が高くなると重い原因になると思います。
WordPressは見えないリソースとの戦いなわけで、アクセス解析に関しては負荷が高いと認識するべきですね。



4.人気記事をSimple GA Rankingで

MixHostのスタンダードプランの1つの目安は月100万PVです。
おそらく現状では、60万PVくらいになると思うのと、画像がそこそこに多いので負荷は多くなると考えられます。

となると、WordPress Popular Postsをなくす方向で具体的にアクションを起こさないといけないなと思いまして、人気記事をSimple GA Rankingで出力するようにしました。
Google Analyticsを利用する方法で接続にはAPI登録が必要で手間でしたが、あとは、すいすいといきました。

正直、、、デザインはもう一つだなと思うのですが、WordPress Popular Postsをなくすということを目的にしているので良しとします。
コードがよくわからず・・・
こんな感じです↓



この人気記事について、、、よくよく考えてみると、モバイル端末のアクセスが8割を考えると、、、ほぼほぼ意味ないんですよね。
本文下部に表示するなどの工夫も必要かなと思います。



5.各記事のPV表示には、Jetpack Post Views

PV表示のために、WP-postviewsを使用していたわけですが、それだとデータベースへの負荷があります。
それをなくすために、Jetpackの統計情報を使えるようにしたJetpack Post Viewsを使いました
このプラグインは3年前から更新がなくて・・・なんだか不安なんですが・・・。

API連携が必要なので、このプラグインがデーターベースにアクセスはない、つまりは負荷がないだろうと判断して、使用してみました。
そして、コードを入れると、簡単にPVを表示できるようになりますが、当然のようにJetpackのサイト統計情報を有効にしてデータを蓄積しないと意味がありません。

とりあえず、ログインユーザーだけに、1日のPV → D、1週間のPV → W、トータル → T として、表示させるようにしてみました。



挙動としてどうかなと不安な部分があるので、どうするかはしっかりと見ていきたいと思います。
それと、このプラグインを入れると、管理画面の記事一覧のところに記事ごとのPVが表示されるようになります!

どうもこのプラグインはデータをサーバーに貯める可能性があるらしいので、今はこのやり方は使っていません


終わりに

WordPressの長期運用・成長を考えると、データベース負荷を減らす事が必要だと考えて今回はアクセス解析系のプラグインを排除しました。
以下の3つを停止しました。3つも入れていたんだなと驚きますが・・・

・post-views
・WP-PostViews
・WordPress Popular Posts

そして、アクセス統計に関しては、GoogleとJetpackという外部サーバーにお願いする形です。
外部が貯め込んだデータをAPIを通じて、人気記事はGoogle、各記事のPVはJetpackから取得する形にしました。
カスタマイズには手間がかかりましたが、負荷がかなり下げられたと思うのでよかったということにします。

P3 – Plugin Performance Profilerで、プラグインの反応時間などを検出するとこんな感じです。
Jetpackが大きく占めていますが、色んな機能があるのでこんなものかなと思います。



今までデータベース負荷を考えることがありませんでしたが、MixHostで見える化されることで、大きく意識が変わりましたし、結果的に長期運用に耐えうるようなカスタマイズができつつあるのではないか思います。
参考になれば幸いです!