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

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

WordPressを高速化する際に、必ずと言っていいほど考えるのがキャッシュすることです。
キャッシュを活用することで、表示を高速化することができます。

キャッシュにも様々なものがあり、実装にもある程度の優先順位があります。
簡単にいえば、ページの一部よりページの全部をキャッシュできる方がいいわけです。

そもそもページキャッシュの方がいいけど、かといって他の対策をしないわけにもいかない。
またプラグインの使用が難しいなど、いろいろなパターンもあります。

そこでキャッシュを実現する1つの手法としてWordPressに標準で搭載されているTransients APIを使ってみるのも一手です。

大まかに説明するとget_postsなどクエリを用いる関数の実行結果をキャッシュとしてデータベースに格納することができます。
サイトに表示する際は、データベースへのクエリ発行自体はするものの、実行結果を格納したものを取り出すだけなので、複雑なSQLを発行する関数を使っている部分に使うと、いくらか負荷を削減できます。

セッションをまたいだ使用が可能で、ページの一部をキャッシュしたい場合などにオススメです。

例 get_postsで使用。

例えば、get_postsで使うとこうなります。

$get_contents = get_transients(‘test’);
if(!empty($get_contents)){
    $args = [
        // get_postsのパラメータを設定。
    ];
    $get_contents = get_posts($args);
    set_transients(‘test’, $get_contents);
}

基本はこれと同じように実装するのがオススメです。
まずは格納しているものがあれば取り出し
なければ新しく発行する、という流れです。

キャッシュがない場合は少しクエリが増えることになるので、
保存期間はある程度長めにしておくのがよいでしょう。

ページが更新された時の対応

ただ、これだとページが更新されたときにキャッシュが元のまま残ってしまう可能性があります。
なので、更新の際にキャッシュを削除する必要があります。

functions.phpに下記のコードを記述することで記事が更新された際に消去することができます。

function delete_cache(){
    delete_transient(‘test’);
}
add_action( 'save_post', 'delete_cache');

delete_postやedit_postのアクションフックも使うとより確実ですが、
save_postで更新全てに対応できるのでこれでよいかと思います。

もし、消すと同時に再設定したい場合は
再設定するコードを書いておけば万全です。

function renew_cache(){
    delete_transient(‘test’);
    //testのキャッシュの内容をそのまま記述。
    $args = [
     // パラメータ
    ];
    $get_contents = get_posts($args);
    set_transients(‘test’,$get_contents);
}
add_action( 'save_post', 'renew_cache');

まあ、キャッシュのない状態でアクセスされればキャッシュされるので
正直、ここまでやらなくてもいいでしょうが。。

まとめ

Transients APIはデータベースの処理を軽減する1つの手段で、かつ劇的な効果をもたらすものではありません。

ですが、0.1秒の時間短縮の積み重ねがやがて1秒、2秒の差を生むのも確かなので
余裕があれば設定してみるのがいいでしょう。

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


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

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

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

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

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

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

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

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

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

関連記事

Keywords