タグ

AJAXとcacheに関するwebmarksjpのブックマーク (3)

  • IE の Ajax (XMLHTTP) で、通信が行われたかキャッシュが使われたかを判定する方法 - IT戦記

    どうやら 以下の方法で判定することができるようです。 // リクエストオブジェクトを作る var req = new ActiveXObject('Microsoft.XMLHTTP'); // フラグの準備 var sended = false; // readystatechange イベントを待つ req.onreadystatechange = function() { if (req.readyState == 4) { // キャッシュに存在しない場合 if (sended) { alert('loaded'); } // キャッシュに存在する場合 else { alert('cached'); } } }; // 通信開始 req.open('GET', 'hoge'); req.send(); // フラグを立てる sended = true; 解説 IE では、キャッシュ

    IE の Ajax (XMLHTTP) で、通信が行われたかキャッシュが使われたかを判定する方法 - IT戦記
    webmarksjp
    webmarksjp 2008/07/14
    javascript
  • 最速インターフェース研究会 :: JavaScriptの関数の結果を期限付きでキャッシュする

    処理に時間がかかるけれども、一定時間は結果が変わらないような関数の結果をキャッシュしたい。 例えばgetElementsByTagName("*")なんかを頻繁に呼び出すようなコードがあったとして、結果をキャッシュしたいけれど画面描画が発生すると使えなくなってしまう。setTimeoutで0ミリ秒後にキャッシュを消す処理を入れておいて、画面描画と関係のある処理はタイマーで実行するような制約を付けてコードを書けばDOMが絡む処理の結果もキャッシュすることができる。というようなケースに使えるような気がする。 Function.prototype.timed_memoise = function(ms){ var self = this; ms = ms || 0; var memo = {}; var clear_q = false; function clear_cache(){memo={

  • XMLHttpRequestとIf-Modified-Since

    RSSリーダーについてさんざん言及されたように、Webコンテンツを取得するアプリケーションでは、 HTTPリクエストに If-Modified-Since ヘッダ をつけるなどして対象コンテンツの更新時刻をチェックし、過剰なデータ取得を避けるのがマナーであるとされている。 同じことがAjaxについても当てはまると考える。Ajaxでは、ユーザーのアクションと非同期にHTTPリクエストを行うため、RSSリーダーと同様に人為操作を超えるトラフィックを発せさせる可能性があるからだ。 そこで、素朴な疑問。 ・ブラウザは、ユーザーが意識しないでも更新時刻チェックをやってくれる。 ・Ajaxの主なエンジンとなる Javascript は、ブラウザに組み込まれたものである。 ・Javascript の XMLHttpRequestを使用すると、プログラマが明示的にコーディングしなくても、更新時刻チェックを

  • 1