悩める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サイト高速化診断で課題を見える化!【毎月5社限定】

株式会社デジタルアイデンティティでは、毎月先着5社限定で無料の高速化診断を実施しています!

高速化に関するこんなお悩みはありませんか?

  • 高速化でどこから手をつければいいかわからない…
  • 自社で高速化をしてみたが、効果が上がらない…
  • PageSpeed Insightsのスコアが良くならない…
  • 高速化ができるリソースがない / 人材がいない…

Webサイト高速化は、同じ項目であってもサイトの状況によって、対応するべきポイントが変わる難易度の高い施策です。
自社での対応が可能な場合もありますが、難易度の高い施策が必要な場合もあります。

そんな時は、無料の高速化診断をお試しください!
様々なサイトの高速化を実現してきたプロが、あなたのWebサイトを分析!
高速化に必要な施策と施策毎の難易度、改善後のインパクトまで、まとめてご報告します!

  • どんな施策をすれば良いか?
  • どの施策から実施するか?
  • どの程度、スピードを改善できそうか?

など、高速化施策の方針が明確化します!

ただし、毎月先着5社様限定となっておりますので、お早めにお申し込みください!

無料の高速化診断に申し込む

関連記事

Keywords

無料!プロに相談する 高速化に関するご相談はこちら