2011-01-24 10 views
2

私はいくつかのドキュメントをクライアントサイドでキャッシュしようとしています。クライアントサイドのiframeキャッシュの良い方法

ドキュメントはiframeに読み込まれているため、ブラウザ内でドキュメントをローカルにキャッシュする方法に関する質問です。

は私の方法は、変数、アイテムを持っていることだったし、その後

if (item.cache) { 
    $('.holder', someElem).html(item.cache); 
    return; 
} 

item.cache = $('<iframe....'); 
$('.holder', someElem).html(item.cache); 

を行うしかし、この方法では、ホルダーにに注射した場合、IFRAME srcをリロードし続けます。

クライアント側のiframeキャッシングに適した方法はありますか?

答えて

2

iframeは、domに追加されるまでページリフレッシュを実際にトリガーしません。私はあなたがiframeのインスタンスを維持することを推測していますが、それを見る時間までDOMに追加していません。この方法はうまくいきません。私はそれを読み込んで非表示にし、必要なときにそれを表示するためにCSS "display:none"を使用することをお勧めします。

別の注意点として、iframesから離れるようにしてください。私は、divにデータをロードするためにajaxを使用し、そのdivを非表示にすることをお勧めします。

+0

hide/showが機能します。ありがとう:)私たちはこの場合iframeから離れることはできません。 – freeall

+0

「iFramesから離れてください」 なぜですか? HTMLテーブルはレイアウト用ではなく表形式のデータに最適ですが、iFramesは自分の意図することを実行するのに最適です。ウェブページ内に別のページを配置します。 ロードされたajaxページは、スクリプトを実行したり、親ページにスタイルを含めたりしません。これらの要素をループして手動でトリガーしなければならない場合でも、クラス間で競合が発生する可能性があります。 外部ページを埋め込む必要がある場合や、場合によっては内部ページを埋め込む必要がある場合は、iFrameを使用します。 – phillyslick

3

HTTPにキャッシュが組み込まれています。Mark Nottinghamはa decent overviewと書いています。 Cache-ControlExpiresヘッダーを設定することは、説明する内容に十分なはずです。

+0

あなたの答えをありがとう。しかし、これは、更新されたバージョンがある場合、ブラウザーがサーバーに最初に尋ねてから、それをローカルキャッシュからロードする必要はありませんか? – freeall

+0

いいえ、それは 'Expires'ヘッダのためです。 – Jim

関連する問題