2

history.js の使用に少し問題があります。

history.js + ajax と dojotoolkit を使って github ライクなソースブラウザを実現しようとしています。

動作しますが、サーバー側で少し問題が発生しました

私はphpを使っていますが、history.jsのpushStateで特定のページを読み込むと、サーバーはまずリクエストタイプを「ajaxですか?」とチェックします。ajax の場合、サーバーはページの要求された部分のみを返し、そうでない場合、サーバーはページ全体を返します。

問題は、ブラウザーを閉じてから再度開くと、ページ全体ではなく、サーバーが返す ajax ページのみが表示されることです。これは、依然として ajax 要求として知られているためです。

どうすればこの問題を解決できますか?

4

1 に答える 1

1

私はまったく同じ問題を抱えており、調査に時間を費やしました。履歴からタブを復元したり、別のページからページに戻ったりすると、通常、元のページはブラウザーのキャッシュから復元されます (最初は、ヘッダーを含めてサーバーに対してまったく同じ要求を行っていると思いました)。

URL への最後の要求が AJAX で、状態がプッシュされた場合、AJAX 応答がブラウザーにキャッシュされ、後でそのキャッシュされた応答が表示されます。

これを解決するには、適切なヘッダーを送信して、AJAX 要求のキャッシュを無効にします。これは、ブラウザーが応答をキャッシュしないようにするために PHP で使用するものです。

header("Expires: Sun, 19 Nov 1978 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
于 2012-08-16T18:03:30.073 に答える