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

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

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

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

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

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

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

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

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

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

関連記事

Keywords

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