前の記事 ≪:JavaScriptアニメーションフレームワークライブラリ「Run」
次の記事 ≫:独自デザインのSelectボックスを作成するJavaScriptライブラリ「Custom Select...

AjaxのレスポンスをキャッシュするJavaScriptライブラリ「JSOC」

2006年11月15日-はてなブックマーク

スポンサード リンク
[PR] 英単語を忘却曲線アプリを使って超効率よく記憶する方法
Webframeworks LLC - Open Souce Projects
Dramatically improve your Ajax application performance with JSOC - the JavaScript Object Cache framework.

AjaxのレスポンスをキャッシュするJavaScriptライブラリ「JSOC」。
次はJSOCを使ってXMLHTTPRequestの結果をキャッシュするサンプルスクリプト。

var xhttp = new xhttp(); // use your XMLHTTPRequest library of choice!

function setCache(n,v){
    var respCode = jsoc.set(n, v);
    alert('Data containing ' + n + ' was fetched and cached!');
}

function clearCacheItem(n){
    var respCode = jsoc.remove(n);
    alert('Data containing ' + n + ' is no longer cached.');
}

function cacheStuff(cName){
    jsoc = new JSOC(); // JavaScript Object Cache
    if(jsoc.get(cName) == undefined){
        // this object is not cached, so grab it as usual, then cache it via your call-back function.
        cacheName = cName; // set the global cacheName so that it's in scope for the call-back function.
        loc = 'http://uri.to.your.data/';
        xhttp.fetch(loc, 'responseProxy', {'method':'POST','type':'text'});
    }else{
        // grab your stuff from cache!
        var cacheItem = eval(cName);
        alert(cName + ' = ' + cacheItem);
    }
}

function responseProxy(response){
    var x = eval("("+ response+")");
    setCache(cacheName, cacheName, cacheData); // this is where cache is set as mentioned above.
}

// window.onload = function(){cacheStuff('FOO')}; // Cache data when your page loads if you choose.

jsoc = new JSOC(); でオブジェクトを作成して、set( key, value) , get ( key ) , get_multi, remove, delete のようなmemcached風のメソッドを提供してくれます。
ブラウザ上で動作する memcached とかかれてますが、セッション終了時にデータが消えてしまいます。
が、WEBアプリ上でデータを格納しておくための一時Configクラスとしてはなかなか使えるかもしれませんね。

データを保持しておくには、「JavaScriptでクッキーを超簡単に使うライブラリ「Cookie Manager」」で紹介したcookiemanager.jsが便利です。

関連の記事検索:Ajax, cache
スポンサード リンク

By.KJ : 2006年11月15日 14:06 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)