悩めるWEB担当者様のための最新ノウハウをお届け

クエリを減らしてWordPressを高速化するテクニック集

WordPressを高速化するためにはクエリを減らすことは重要です。
クエリを減らすことでそもそもデータベースにクエリを送ってデータを受け取る必要がなくなったり、その処理による負担が軽くなったりするので、
サーバーからレスポンスを返すまでの時間が早くなり、表示の高速化に繋がります。

また、同時にアクセスしているユーザーの数だけクエリの数も増えるので、ページ内のクエリが1つ増えるだけでもサーバーに大きな負荷がかかることがあります。

この記事ではクエリをなくしたり減らしたりするテクニックをいくつか紹介していきます。

キャッシュの使用

まずはキャッシュを使用することです。

ページをキャッシュさせておくと、クエリを発行する必要がなくなります。
そもそもサーバー側での処理もほぼ要らなくなるので、高速化に大きな効果をもたらします。

「WP Super Cache」などのプラグインではページキャッシュ等の設定をすることができます。
またWordPressに標準搭載されているTransietns APIやWP_Object_Cacheを使用する方法もあります。

WordPressでTransients APIを使って表示高速化する

他にもクエリキャッシュ等様々なキャッシュがあるので、自分のWordPressに合わせて検討してみてください。

テンプレート内でクエリを減らす

次にWordPressテーマのテンプレート内でクエリの数を減らすことや負荷を軽くことを考えます。

データベースにクエリを発効する関数は多数あるので、全てを変更するのは難しいかもしれません。
負荷の高いものから変更していくのがオススメです。

特に多いのが、カスタムフィールドの値の取得にget_fieldを用いているパターンです。
カスタムフィールドは基本的に数が多く、get_fieldでそれぞれ取得していると
その数だけクエリが発行されるので、負荷が増加してしまいます。

できるかぎりget_fieldsを用いて、1つの記事に紐づいたカスタムフィールドはまとめて取得してしまうのがオススメです。

$field1 = get_field(‘field1’);
$field2 = get_field(‘field2’);

$fields = get_fields();
$field1 = $fields[‘field1’];
$field2 = $fields[‘field2’];

とすればクエリの数は2から1となりトータルの負荷が軽くなります。
カスタムフィールドが1つ2つだとそこまで効果はありませんが、
基本的に取得するカスタムフィールドの数が多ければ多いほど効果を発揮します。
ぜひ使用をオススメします。

メインクエリで代替できるものは、サブクエリを発行しない。

WordPressで時々やっているのを見かけるのが、
メインクエリで欲しい記事は取得できなかったり、件数等の条件が違ったりするので、new WP_Query等を用いてサブクエリを発行し、取得した記事を表示しているというパターンです。

これだと、使わないので必要ないはずのメインクエリを発行してから、新たにサブクエリを発行するので、余計なクエリが1つ増えることになります。
たった1つですが、100人1000人に同時アクセスされると100や1000もクエリが増えてしまうので、サーバーに大きな負荷がかかります。
減らしておくに越したことはありません。

では、どうするのかというと
サブクエリを使わず、メインクエリをpre_get_postsのアクションフックを用いて書き換えます。
例えば、(普通の)固定ページなど書き換えられないものもありますが、ブログ投稿のインデックスページ等書き換えられるものは書き換えることを推奨します。

function changeMainQuery($query)
{
	//管理画面のメインクエリーとメインクエリーじゃないときは処理しない
	if (is_admin() || !$query->is_main_query()) {
		return;
	}
	
	//例えば、ブログ投稿のインデックスページならば、、
	if ($query->is_home()) {
		//カスタム投稿タイプがnewsの記事を表示する。
		$query->set( 'post_type', 'news' );
	}
}
add_action('pre_get_posts', 'changeMainQuery');

のように記述します。
setはWP_Queryのパラメータにあるものなら設定できるので、何があるのか確認しておくとよいでしょう。

まとめ

ここでは、いくつかのテクニックを紹介しましたが
本質はクエリを減らすこと。負荷を軽くすることです。

MySQL側でもできることはたくさんあるのですが、
まずはWordPressのテンプレートで減らすことが重要です。

1つ1つ試しやすいテクニックになっていると思うので
試してみてください。

当サイトではこの他にもWebに関するお役立ち情報を多数ご紹介しています。
Web担当者の方、デジタルマーケティングに興味がある方はぜひご覧ください。


広告運用やSEO、解析・Web製作など、当社はWebに関わるベストソリューションをご提供しています。お悩み・ご相談も受け付けておりますので下記のボタンからお気軽にご連絡ください。

Webサイト全体の表示スピードを診断!低速ページを一気に検出!

デジタルアイデンティティでは、お客様のWebサイト全体の表示スピードを診断し、低速ページを検出するサービスを提供しています。

主要なページはもちろん、サイト内の全ての低速なページの改善をおこなうことで、SEOやアクセシビリティに好影響があると考えられます。
しかし、サイトの規模が大きくなるほど、すべてのページを手動で診断することは現実的ではありません。

弊社の「低速ページ検出サービス」では、ドメイン内のすべてのURLの表示速度を診断し、低速ページの一覧とともに50項目以上の診断で低速になっている要因を分析。また、ご希望に応じて具体的な改善施策のご提案もいたします!

こんなお悩み、ありませんか?

  • サイト内のすべてのページの表示速度を調査したい…
  • サイト全体のUI/UX、アクセシビリティを向上させたい…
  • サイト全体のSEO対策を強化したい…
  • どこから改善をすれば良いかわからない…

様々なWebサイトの高速化を達成してきた技術とノウハウで、貴社サイトを診断いたします!

「低速ページ検出サービス」の詳細はこちら

関連記事

Keywords