お天気予報APIなどをアクセスがあるたびに呼びに行く必要はありません。
毎秒1アクセスがある人気サイトだった場合、毎日86400回もリクエスト要求を出してしまうことになります。
これを例えば1分キャッシュを保存しておくだけで一日のリクエスト回数を1440回に激減させることができます。
一時間に一回なら一日に24回です。
更新頻度が重要でないものは積極的にキャッシュを利用しましょう。
また、APIでなく内製のものでも、毎回DBやファイルにアクセスして動的にページを作成するのに時間や負荷がかかる場合、動的にページを作成した結果をキャッシュしておいてその後は単にそれを表示するだけ、というのはよい考えです。
たとえばSmartyなんかはテンプレートをファイルとしてキャッシュしています。
逆にリアルタイム更新が必要な掲示板やブログの投稿やコメント、ショッピングカートの中身などにはキャッシュを使ってはいけません。
とりあえず使用が簡単なAPCを使ってみます。
最初は使用できない状態ですが、XAMPPならphp.iniの
;extension=php_apc.dll
となってる行のコメントを外せばいきなり使用できます。
パッケージがない場合はpeclから持ってきましょう。
peclのパッケージにはAPCの状態をビジュアルに見ることができるサンプルが含まれているのですが、当方の環境ではApache毎落ちてしまいます。何故。 //GDが悪いっぽい
APCの使い方は非常に簡単。
a.php
1
2
3
4
|
//APCキャッシュに保存
apc_store('a','データ');
|
b.php
1
2
3
4
5
6
|
//APCキャッシュから取得
$ret=apc_fetch('a');
var_dump($ret);
|
a.phpを実行した後にb.phpを実行すると、a.phpで保存した内容が表示されます。
見ての通りセッションも何も使っていませんが、apc_store()で突っ込んだデータは、そのままapc_fetch()で取り出すことができます。
まあ平たく言うとアプリケーションスコープのようなものです。
さて、最初の設定のままだといつまでもAPCキャッシュの中身が残り続けてデータが際限なく増えていくので、
php.iniの[APC]の項目に
apc.ttl=3600
apc.user_ttl=3600
と書いておきます。
これで、APCに突っ込んで3600秒たったデータは自動的に削除されます。
ソース側でapc_store()に生存秒数を指定することができ、またapc_clear_cache()を使用すれば手動で削除できますが、うっかり忘れた場合のためにも面倒なことはPHP本体に任せてしまいましょう。
次回はAPCキャッシュの具体的な使い方でも。
PR
トラックバック
トラックバックURL: