2011-12-04 11 views
2

IFRAMEではなく、DIVにajaxコンテンツを注入したjQuery UIタブを使用しています。jQuery UI ajaxタブとコンテンツの詳細なキャッシュコントロール

コンテンツは、HTMLマークアップからなるテキストファイルとしてサーバー上に保存されているが、ファイルには、DOCTYPE宣言、HEADセクション、私は力に、このアプローチを試してみましたBODYセクション」は、基本的に

<DIV>lorem ipse</DIV>. 

だが欠如していますノー・キャッシングのシナリオ:

$("#tabs").tabs(
    { 
    cache: false, 
    ajaxOptions: {cache: false} 
    } 
); 

しかし、私はフィドラーでキャッシュ]タブを見たときには、この意見:

HTTP/200応答はdefaulによってキャッシュ可能ですExpires、Pragma、 またはCache-Controlヘッダーが存在していて、キャッシュを禁止している場合を除きます。 HTTP/1.1 ETAGヘッダーが存在している: "53a38d5790b2cc1:AB2" HTTPのLast-Modifiedヘッダーが存在する:日、2011年12月4日夜2時23分50秒GMT

情報が提供された明示的なHTTPの有効期限。 ほとんどのブラウザはヒューリスティックな有効期限ポリシーを使用しています。 Last-ModifiedとDateの間のデルタの10%は'00:20:13 ' です。したがって、この応答はヒューリスティックに期限切れになります12/12/2011 1:08:26 PM。

この特定のコンテンツをどのようにノーキャッシュとして保持できますか?

P.S.それは、キャッシングを防ぐために、URLに値を変更することのいくつかの種類を追加するのが一般的だとミカエルのポイント@を受けて、私はjQueryのAJAXの宣言的なアプローチを使用するときにそれを行う方法がかなりわからない:

<div id='tabs' class="ui-tabs"> 

    <ul> 
     <li><a title="contentcontainer" href="foo.html">One</a></li> 
    <li><a title="contentcontainer" href="foo2.html">Two</a></li>   
    <li><a title="contentcontainer" href="foo3.html">Three</a></li> 
    </ul> 
    <div id='contentcontainer'></div> 
</div> 

どのようにhrefのURLに'?' + new Date().getTime().toString()を追加しますか?

答えて

0

この場合、キャッシングの原因がわかりません。

しかし、ajaxリクエストを扱うときには、URLにランダムまたはタイムスタンプのパラメータを追加するのが一般的です。例えば/ public/static_fileの代わりに/ public/static_file?_ = 1239871984を入力してください。

有効期限ヘッダーを追加する方法がありますが、一部のブラウザーではうまくいきません(IE8が本当に積極的だったajaxキャッシング)。

同じ方法は、サイトが更新されたときにjs/cssファイルのリフレッシュを強制する場合にも機能します。

関連する問題