2016-03-23 20 views
2

pjaxでpopstateを使用している間は、ブラウザのキャッシュされたコンテンツに置き換えずに、サーバーからコンテンツを再度読み込みます。キャッシュされたコンテンツが適用されている場合、キャッシュされたコンテンツ内の<script>はまったく動作していません。したがって、ブラウザのBack/Forwardボタンを押すだけで、キャッシュされたデータを使用するのではなく、通常のPJAX呼び出しをサーバーに強制する方法はありますか?pjaxの作成方法:popstateは単純なPJAX呼び出しのように動作します

助けてください。おかげさまで jQuery PJAX by Chris Wanstrath (defunkt)

答えて

2

は慎重にここにこのリンクでファイルに491にjquery.pjax.jsをライン476に気づきます。 ifのコードは実際にキャッシュされたコンテンツを呼び出し、elseのコードは私たちが望むものです。

if (contents) { 
    container.trigger('pjax:start', [null, options]) 

    pjax.state = state 
    if (state.title) document.title = state.title 
    var beforeReplaceEvent = $.Event('pjax:beforeReplace', { 
     state: state, 
     previousState: previousState              
    })                     
    container.trigger(beforeReplaceEvent, [contents, options])       
    container.html(contents) 

    container.trigger('pjax:end', [null, options]) 
    } else { 
     pjax(options) 
    } 

ここで、私たちは何をしようとしているのですか?はい、ちょうどこの行を除くすべて削除:

pjax(options) 

を、あなたが行ってもいいです!誰も私にこの解決策を教えてくれたのは不思議です。しかし、私は最終的に自分で解決策を見つけました。これは多くの人々に役立つと思います。

ありがとう、とにかく。

0

ソースを変更する必要はありません。あなたはそのmaxCacheLength

$.pjax.defaults.maxCacheLength = 0;

を0に設定することで、代わりにキャッシュを使用するので、再びサーバからロードするようにpjaxを設定することができます
関連する問題