私は使用しています コードイグナイタ(MVC) そして エクジット アプリケーション用。 アプリケーションには、ユーザー関連データを含む多数のextjsグリッドが含まれています。特定の時間までのサーバーJSON応答をキャッシュしたいです。
私はこれを次のように実装するというアイデアを得ました
if(cache file exists and not expired)
{
$data = read_file(cache file path);// the cache file contains json encoded data with .json extention
}
else
{
$result = call to a model function; // returns data from a mysql query
$data = json_encode( $result );
//creating cache file with retrived data
wite_file(cache file path, $data)
}
echo $data; // $data is in json format
この方法でキャッシングを実装したいです。それは正しいやり方ですか? 完全に私はextjsグリッドのサーバーJSONデータをキャッシュするためのカスタムJSONキャッシュライブラリを実装したい
codeigniterですでに利用可能なJSONキャッシュライブラリはありますか。 あなたの提案を助けてください
回答:
回答№1は0Codeigniterはあなたが記述したものとほぼ同じものを内蔵しています。彼らはそれをキャッシングドライバと呼びます: http://codeigniter.com/user_guide/libraries/caching.html
あなたの場合は、このように開始したいでしょう。
$this->load->driver("cache", array("adapter" => "file", "backup" => "file"));
if ( ! $foo = $this->cache->get("foo"))
{
echo "Saving to the cache!<br />";
$foo = "foobarbaz!";
// Save into the cache for 5 minutes
$this->cache->save("foo", $foo, 300);
}
echo json_encode($foo);
キャッシュデータをファイルに書き込みます。
あなたの場合の悪い面はCIがシリアライズするということですJSONを使用するのではなく、キャッシュファイル内のデータ。 serialize()の代わりにjson_encode()を使用してドライバをオーバーライドできると思います。上記の方法では、出力のシリアル化とjsonエンコードの使用の両方が行われるため、少しリソースが消費されます。
回答№2の場合は0
はい、ファイルの有効期限が切れているかどうかを知るために、ファイルシステムに作成タイムスタンプを使用することができます。
ザ stat
functionは必要に応じてそれらを期限切れにするのに十分なファイルに関する情報をあなたに与えるべきです。
Codeigniterにはいくつかあるようです キャッシングメカニズム 残念ながら、Webページでしか利用できないようです。ビューを使用してJSONをレンダリングする場合は、それを使用できる可能性があります。