2011-09-15 30 views
2

jQueryとAjaxを使用してサイトをリロードせずにサイトのコンテンツを変更するサイトがあります。サイトには頻繁に変更するコンテンツが含まれています。しかし、何とかページがキャッシュに保存されるので、変更が反映されません。URLの後に乱数を追加する

ブラウザをMETAsやPHPのようなキャッシュに保存しないようにするいくつかのことを試しました。しかし、それは動作しません。

window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5); 

が(それは私のコードではありません、でそれを見つけた:

私はので、私は好きなことに乱数を追加することを考えたページは常に同じURLを持っていること、それは事実と関係していると思いますいくつかgooglin)しかし、これはURLにクリックしたリンクIDを追加するだけです。私は乱数を加えるために "Math.random()"をどこに置くべきかわかりません。

希望すると助かります!あなたはjQueryのAJAX機能を使用している場合

+1

私は助けるハッシュに追加するとは思わない、それは、クエリ文字列にする必要があります。 – duncan

+1

これはhttpキャッシュの目的を破ります。 回避する前にhttpヘッダーを変更することを検討してください。 [WikipediaのHTTPヘッダーフィールド一覧](http://en.wikipedia.org/wiki/List_of_HTTP_header_fields) –

+1

フラグメントはサーバーに送信されません。私はあなたのURL(通常のurlパラメータ)の後ろに "?ts =" +(+(new Date))のようなものを入れたいと思う。 – npup

答えて

7

cache : falseをそのまま使用してください。 jQueryは自動的にURLの最後にタイムスタンプを追加し、ajaxリクエストがキャッシュされないようにします。 falseに設定し、それはしないように要求されたページを強制する場合は真、dataTypeと 'スクリプト' と 'JSONP' の偽

.ajax()

キャッシュ デフォルトのAPIリファレンスを引用

ブラウザによってキャッシュされます。 cacheをfalseに設定すると、クエリ文字列パラメータ "_ = [TIMESTAMP]"がURLに追加されます。将来のすべてのAjaxリクエストのため

  1. グローバルキャッシュを無効に。 .ajaxSetup()

    $.ajaxSetup({ 
        cache: false 
    }); 
    
  2. 要求ごとにキャッシュを無効にします。 mentionnedほとんどのよう.ajax()

    $.ajax({ 
        url: "test.html", 
        cache: false, 
        success: function(html){ 
        $("#results").append(html); 
        } 
    }); 
    
+0

ありがとうございます。私はそれを知らなかった! $(document).ready ....の後にこれを置くべきですか? – Mausoleum

+1

はい、あなたは_have_もしませんが、DOM準備の直後に '$ .ajaxSetup()'を使うことができます。複数のDOM準備ハンドラがある場合は、これをjsファイルの最初の行に置くだけです。 –

+2

私はあなたの答えをupvoted、これはトラフィックを増加させることを知って重要です。 _often_変更が_always_変更を意味するものではなく、応答が純粋なhttpヘッダー応答(ほとんどのもの)よりもはるかに大きい場合は、If-Modified-SinceのようなETagを使用して多くのトラフィックを節約できます。 Httpは、目に見えるものよりも多く提供しています。 –

0
window.location.hash = $(this).attr('href') 
          .substr(0,$(this).attr('href').length-5) 
          + Math.random(); 
3

は、あなたのページの上部に$.ajaxSetup({ cache: false })を設定してみてください、とjQueryはあなたのためにそれの世話をしましょう。

+0

このアドバイスをいただきありがとうございます。 – Mausoleum

2

を参照してください、あなたはjQueryのcacheパラメータを使用する必要がありますが、あなたの情報のために、それは多くの場合、かなりのことが保証時間値である、Math.randomを使用しますがnew Date().valueOf()ていない実行されますユニーク。

0

最良のオプションは、リクエストにタイムスタンプを使用することです:

window.location.hash = $(this).attr('href') 
          .substr(0,$(this).attr('href').length-5) 
          + timestamp; 
関連する問題