見出し画像

[WordPress] optionsテーブルを使って簡単なキャッシュ管理


問題はGoogle Analytics APIのエラーからはじまりました。

エラーメッセージは以下の通り。

(403) Quota Error: profileId ga:64795347 has exceeded the daily request limit.

調べてみると、Google Analytics APIの使用制限に引っかかっていたことが原因でした。

Google APIでは24 時間あたりの最大アクセス数が決まっていて、それを超えてアクセスしようとするとエラーが生じます。エラーが生じているかどうかは Google API Manager にて確認することができます。

私はこのAPIを使ってアクセスランキングを表示させていたのですが、サイトのアクセス数の増加に伴いこの制限に引っかかるようになってしまったようです。そこで、このAPIを使って取得したデータをどこかに一定期間保存しておけないかと考えました。


wp_optionsテーブルとは

wp_optionsテーブルとは、ワードプレスの管理>設定画面で設定されたオプション設定情報が保存されており、プラグインの設定情報が格納されることも多いテーブルです。

Google APIへのアクセスを減らすため、取得したデータを一時的にこのテーブルに格納して参照することにします。


実際に書いたコード

//キャッシュ時間を1時間に設定
define('CACHE_TIME', 3600);
 
//データ取得時間をゲット
$updTime = get_option('gg_upd_time');

// データがないか、キャッシュ時間を過ぎていたら
if (!$updTime || $updTime + CACHE_TIME <= time()) {

   //処理を実行
    ・・・略・・・
   $result = [Google APIを使ってデータを取得]:

   // 最終取得時間とデータをwp_optionsテーブルに格納
   update_option('gg_upd_data', $result);
   update_option('gg_upd_time', time());

//キャッシュ時間より前だったら
} else {

   //wp_optionsテーブルからデータを取得
   $result = get_option('gg_upd_data');
}

この処理を追加することで、ページが表示される度にAPIにアクセスするのではなく、取得した情報を1時間のあいだDBに格納して参照させることが可能になりました。

この記事が気に入ったらサポートをしてみませんか?