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

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

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

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

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

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

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

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

本記事では、WordPressの表示速度を高めるためのキャッシュ活用法として、Transients APIの基本と実装方法を解説しています。

  • Transients APIは、クエリ実行結果を一時的にデータベースへ保存し、再利用することで処理を高速化できる仕組み。
  • 部分的なキャッシュにも有効で、複雑なSQL処理を軽減するのに適している。
  • 記事更新時にはsave_postフックでキャッシュ削除を行い、データの整合性を保つ。
  • 再設定コードを組み合わせれば、自動更新も可能で安定した運用ができる。
  • 劇的な効果ではないが、積み重ねによってサイト全体の高速化につながる。

【無料】PageSpeed Insightsを100ページ一括自動診断!

「トップページは改善したが、下層ページは放置気味…」「1ページずつ手動で計測するのは手間がかかる…」
そんなお悩みを解決!最大100ページを自動で計測し、修正優先度付きのレポートを無料で作成します。サイト全体の「健康状態」を把握したい方は、今すぐお申し込みください。

例 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担当者の方、デジタルマーケティングに興味がある方はぜひご覧ください。

数時間の作業が一瞬で!PageSpeed Insights最大100ページを一括診断!

PageSpeed Insightsを手動でチェックすると、3〜5分程度かかってしまいます。
一定規模、以上のWebサイトで全ページをチェックしようとすると、数時間以上のリソースが必要になります。

デジタルアイデンティティでは、「トップページ以外の速度状況がわからない」「ページ数が多くて管理しきれない」という企業様向けに、PageSpeed Insightsで最大100ページをまとめて計測する「サイトスピード一括診断ツール」を提供しています。

WebサイトのURLを入力するだけで、モバイル・PC両方のスコアやCore Web Vitals指標を全自動で取得。単なるスコアだけでなく、「どのページから直すべきか」がわかる修正優先度リストや、SEOリスクの可視化レポート(PDF・Excel)を無料で納品します。

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

  • 1ページずつPSIで計測するのが面倒で放置している…
  • トップページは早いが、記事や商品ページの速度が不安…
  • どのページが足を引っ張っているのか特定できない…
  • 社内報告用にサイト全体のパフォーマンスを数値化したい…
  • 改善インパクトの大きいページから効率よく対策したい…

「点」ではなく「面」でサイトの課題を把握し、ユーザー体験とSEO評価を底上げしましょう。
毎月10社限定の無料診断です。

【毎月10社限定】無料一括診断に申し込む

関連記事