あまり高速でないサーバーでWordPressサイトを作るときに工夫できること(表示速度改善)

契約してみないと分からないレンタルサーバー。湯水のごとく毎月の使用料を払えばどんどん負荷に強くなる(表示速度が速くなる)のはほぼ間違いないですが、中にはそうでないサーバーもあったりして選ぶのに結構苦労しますよね?

いろいろなサイトで紹介されている人気だから〇〇サーバーでいいや!!と契約してWordpressでサイト作ったら表示が遅い、使えば使うほど表示が遅くなってくる、「負荷がかかってます」というメールが届くなど何で?と思うときもありますね。

このサーバーじゃダメだ!とサイト移転するのも作業的に大変だし、独自ドメインの移管に費用がかかるし・・で我慢するしかないという方多いのではないでしょうか?

少し裏話になりますけど「人気の〇〇サーバー」としていろいろなサイトで掲載されているレンタルサーバーのほとんどはその情報ページのアフィリエイトリンクを踏ませる(クリックさせる)ために紹介されているものが多く、本当にそうなのかというと眉唾ものだと思います。そして、「いっぱいサーバーあるなぁ」と思って元の運営会社を辿ってみるとみんな一緒だったりします(笑)。

ただ、遅いなぁと思っているサーバーでも、実際に自身のパソコンでサーバーを作り、外部からアクセスしてみるとすんごい遅いのが実感でき、「やっぱりレンタルサーバーはすごい」と感じることでしょう(経験談)。自宅サーバーだと機材の不具合の対応もしなければならないし、何より電気代が・・・となりますから結局レンタルサーバーの方が割安になると思います。

今回はそんな自身の経験を踏まえ、私のようにそんなにレンタルサーバーに費用をかけたくない、費用をかけることができない、費用をかけるつもりがない方がそれなりなレンタルサーバーでそれなりにWordpressでサイトを構築したときにできる表示速度改善方法を紹介します。

スポンサーリンク

高速化・最適化について紹介されているページを鵜呑みにしない

これ、案外知らない方が多いと思います。ネットでいろいろ検索していると「これをやったら爆速」などという半ば釣り?のような記事が出てきますが、こういうページの通りにやって効果が劇的に出るのは経験上「負荷に強くてそもそも処理速度が速いサーバー」の場合に有効な手段だと思った方が無難です。

親切なサイトだと「あくまで自身の経験」とか「環境に合わせて」といった注釈がされているページもありますね。見る側からすると「〇〇です」と言い切ってくれた方が信頼性が上がるのは間違いないことですが、裏を返せば「そんなにはっきり言い切れる根拠は?」というところが欠如しているページも多いはずです。

自信がないから言葉を濁す場合もありますが、よくわかっているからあえて「環境によっては」という書き方をされているページもありますから、たくさんのページを見て判断するようにしてくださいね(私が書く記事はよほどのことがない限り結構濁して書いてます-世の中分からないことだらけですから・・・)。

さて、こうなると何を見て判断したらいいの??となってしまいますね。そんな時に使えるのが内部で速度を計れるプラグインです。紹介したいのは「Query Monitor」というプラグイン。

インストールして有効化すると管理バーに

な感じでそのページの状況を表示してくれるんです。

データは左から

  1. サーバーの応答時間(ページ生成時間)
  2. そのページを表示するために使ったメモリの使用量
  3. データベースクエリの実行時間
  4. 実行したクエリ数

になります。もう少し詳しく紹介すると、

  1. 「このページ作れ→はいよ!!」となるまでの時間が1
  2. 「はいよ!→ページを作るためにデータベースからデータ呼び出しまっせ!」にかかる時間が3
  3. 「ページできたよ」となるまでに使ったメモリ量が2
  4. 「ページを作るためにいろいろなことしたぜ!」の数が4

ということになるんですね。非常に単純で分かり易い感じです。

その他いろいろなデータも見ることができますが、いろいろなデータの見方は私が解説するよりも

ですごく分かりやすく紹介されていますから参考になさってください。

よくページの表示速度計測というと「PageSpeed Insights」などが有名処ですが、サーバーの混雑具合や通信状況などによって結構数字が変化しますから、内部的な速度が分かる「Query Monitor」の方が直感的で分かりやすいと思います。

このデータを見ながら効果があったかなかったかを計っていけば目安としては十分になります。ただし状況によりますから1つ対策したら1週間位様子を見るという位の間隔を持って対策を進めないと、どれが効果的なのかが全くつかめなくなりますから注意してください。

だんだんページ表示が遅くなっていくのは?

WordPressは投稿や固定ページなどを作成するとデータベースのテーブルの中へデータとして格納し、アクセスがあるとそのデータを引っ張り出してページを都度作成するというツールです(当然ご存じですよね?)。このデータは当然投稿が増えれば大きくなり、その中から該当するものを探し出して表示するのでだんだんと動作が重くなります。

と同時にそれに紐づいたカスタムフィールドのデータ、カテゴリーのデータ、タグのデータなども別のテーブルから引っ張り出すので結構大変な動作になるのです。

最初のうちは快適に動作していたのにだんだんと・・・という場合はこれが原因だと思われますが、サイトが充実してきている証拠でもあるわけですから仕方ないのかもしれません。

そして、高速化をしたら効果が出た、出ないというのもこのサイトの規模によっても違ってきますので、あくまでも自身のサイトの状況とサーバーの状況に応じて対処していくことが必要なのですね。



同時にデータが蓄積されていくプラグインなどの追加機能に注意

WordPressには内部的にアクセス解析をしたり、「Wordpress Popular Posts」のように人気記事を表示したりできるプラグインがたくさんリリースされています。

これらのプラグインや拡張機能はアクセスがあるたびにそれぞれ別のデータを蓄積していきます(ログといいます)。これもどんどん肥大化していきます。

1日に100ページビューのサイトでは100件のデータが、1日に1000ページビューのサイトでは1000件のデータが・・・というようにアクセスが増えれば増えるほどデータは肥大化していきます。

これも投稿などのデータと同じくデータベースのテーブルに保存されるので、それらを使ってランキング表示したりアクセスデータの分析結果を表示しようとすると・・・当然ながらサーバーの能力で集計などをすることになりますから負荷が上がり、ページの表示速度は低下します。

こうしたプラグインなどのデータを肥大化させない方法は

  1. 必要な期間だけのデータを保存しておく(データ保持期間を適切に設定する)
  2. データの集計結果をキャッシュ化する

の大きく2つです。過去30日分のデータしか見ないのに1年分のデータを蓄積しているのは無駄ですから、必要な期間+α程度で削除されるように設定しましょう。逆に自動で削除できないようなプラグインは導入を見送るべきですから仕様をよく見て選ぶようにしましょう。

データ量とともに集計データのキャッシュ化は結構速度に影響します。速報値として毎回アクセスがあるたびに集計しなければならないようなサイトでなければ人気記事の一覧はあくまで目安ですし、実際に訪問した方はサイト制作者と同じように「今」のデータを望んでいるわけでもないですから、1日1回キャッシュの更新がされる程度にしてサーバーへの負荷を軽減しましょう。

キャッシュ系プラグインの導入は考えものの場合あり

ページ表示速度高速化の決定版的にいろいろリリースされているキャッシュ機能を持たせるプラグイン類。共通して行われるのは普段アクセスの度にデータを引っ張り出してページを作るのではなく、あらかじめページを作っておいてアクセスがあったらそれを表示するという高速化手法です。

このキャッシュを作る期間は任意に設定可能で、毎日1回作るとか1か月に1回作るなど自身で調整できるものが多いです。

結構速くなるという紹介ページやプラグインの紹介記事を見てすぐ導入・・・の前に、こんなケースではあまり有効でないという事柄を紹介しておきます。

1つめはキャッシュする=キャッシュを作るためにサーバーが動作するということ。プラグインには大別してキャッシュの期限が切れた後でアクセスがあったときに新しいキャッシュを作るものと、定期的にキャッシュを更新していくものがあります。どちらの場合もアクセスされたときにキャッシュが有効なのかを判断し、無効なら通常通りデータを引っ張り出してページを表示しつつ新しいキャッシュを作るという重複した作業が発生します。これによってサーバーに負荷がかかり、かえって表示速度が遅くなることがあります。

2つめはキャッシュの期間中にキャッシュした効果がある位のアクセスがあるのか?ということ。キャッシュの期限が例えば1日とした場合、そのページへアクセスされる件数は1日何件ありますか?ということ。1時間に1ページビュー(PV)として1日24PV、1時間に平均10PVとして1日240PV。サイトの規模にもよりますが、導入しても効果的なのかどうかは1ページごとのページビュー数と相談になります。

逆に毎回ページをデータから作成して負荷が過大になったときにはレンタルサーバーから警告が来るところが多いですから、通常運用していて警告が来たら考える・・程度に考えた方がいいと思います。

クエリー数の見直し

クエリ(query)とはデータベースの用語で直訳すると「問い合わせ」という意味になります。WordpressはPHPという言語を使って「このデータ」引っ張り出しなさいという命令を出し、データベースから必要なデータを抽出して表示しますから、単純にクエリー数が多いと表示速度が遅くなります。

上で紹介したプラグインの詳細データを見るとどんな命令が出てデータベースからデータを引っ張っているのかも詳細に表示されるので、テーマによるものなのか、プラグインによるものかを特定して対策するといいと思います。

プラグインについては必要なければ停止するか

複数使うと表示速度に影響があるといわれるプラグイン。そのページを表示するのに必要ないプラグインは「無効になっている」ことにして読み込まないようにすればいいのでは?という発想に基づいて作られたのが、今回紹介する「plugin load filter」です。

でページや種類ごとに起動するプラグインを限定するなどして余分なクエリーが発生しないようにします。ただ厳密に言うとこのプラグインが行うのはページ表示の命令(アクセス)があってから、プラグインの有効/無効を判断して(これを条件分岐といいます)必要なものだけを有効にするという動作をしますから、環境によっては判断をするPHPの速度が遅いためにかえって逆効果になることもあります。

テーマについては通常の場合はカスタマイザー(テーマの機能設定)などで無効にした機能については事前に条件分岐してクエリーの実行をしないようになっていることが多いのですが、中にはクエリーだけ実行させておいて表示させないという動作をするものもあります。後者の場合は全くの無駄になってしまいますからテーマの変更を考えるか、PHPプログラムから不要な部分を削除すると対策できます。

ただし、テーマはたくさんのファイルが複雑に絡み合って1つのページを表示するようになっているものもありますから、よく調べてから対処しないと表示そのものがエラーになってしまうこともあります。

テーマやプラグインは導入した状態が最強!?

デザインや機能などテーマやプラグイン導入後にカスタマイズできるものだったり、自身でカスタマイズすることもあるとは思いますが、基本的にはCSS(デザイン要素)も含めて何もカスタマイズしない状態が一番効率的な構造であることに違いありません。

最近流行りの将棋に例えれば、最初に両者が並べたスタート前の状態が最強というのと似ています。将棋では1手指すごとに隙ができ、その隙をついて勝負が決まるゲームです。Wordpressに戻ればテーマやプラグインがまさにこの状態なのです。

従って、シンプルイズベスト!!ということで余分なプラグインは有効にしないことと、テーマもできる限り導入時のまま使えるものを探すのが一番だと思います。

前述したクエリーの問題よりは速度への影響が少ないとはいえ、子テーマを使ってCSSやfunctions.phpへ追記・上書きするカスタマイズも表示の度にCSSやPHPプログラムを余分に動作させることになるわけですから極力何も加えずに使った方がいいということです。

また、プラグインにはデータベースの中に独自のテーブルを作るものや、Wordpress本体のwp_options.phpというファイルの中に設定情報などを追加するものがほとんどなので、試しに導入というのを繰り返しているとどんどんゴミファイルがたまることになりますからテストサイトを作るなどして別のサイトで試してから使うようにしましょう。

さいごに

いかがでしたか?経験上で思いつくままに紹介してきましたが参考になる事柄はありましたか?何かの役に立てれば幸いです。

WordPressは簡単に使えて、簡単にテーマの変更ができて、簡単にプラグインでパワーアップできる本当に便利なツールですが、パソコンのOSと同様に使えば使うほど不具合が出ないようにするために残ったゴミファイルやデータがたまり動作は遅くなっていくことが多いですから、結論から言えばできるだけ変更を与えずに運用した方が長く良いパフォーマンスのまま使えることは確かです。

とはいえ、本来ホームページは情報発信の場、面白いページを見てもらう場ですから速度ばかりに気を取られて何も飾り気のないサイトもどうかと思いますからバランスをとることが大事だと思います。

当サイトもたくさんのプラグインを使い、シンプルだと評判の【Simplicity】を使っていますが、このテーマをご存じの方ならお分かりの通り結構原型をとどめない位カスタマイズしてます。表示速度に関する記事を書いておきながら、やっぱりサイトは作り手も訪問者も楽しくなくちゃ!!ということで、表示速度についてはあまり気にしていません(笑)。

トップへ戻る