2012-06-15 4 views
7

Chrome 19で奇妙なバグが発生しました。私は完全なAJAX Webサイトを実装しました(すべての非外部リンクはAJAXリクエストによって開かれています)。 JSON形式でAJAXでHTMLスニペットを送信します。ChromeのAjax + pushStateのバグ

外部リンクを経由してサイトを離れて戻ったとき、ChromeはそのURLのキャッシュデータをレンダリングします。問題は、JSONコンテンツをキャッシュして完全なWebページではなく表示することです。

これは、次の手順で再現(UPDATE:私はそれ以来、私のウェブサイト上でAJAX機能を削除していないので、このバグはもはや表示されない):第二日に

  1. オープンhttp://beta.mirtes.cz/
  2. クリックリンク(16. 6. 2012の横に「それはすべて奇妙な電子メールで始まった」)。このページ(あなたは今はhttp://beta.mirtes.cz/it-all-began-with-a-strange-e-mailです)はAJAX経由で読み込まれます。
  3. 「すべてが奇妙な電子メールで始まった」をクリックしてください。あなたは外部のウェブサイトにリダイレクトされます。
  4. ページが完全に読み込まれた後、Chromeで[戻る]をクリックします。

Cache-Control:no-cacheですべてのAJAX応答を送信しようとしましたが、効果はありません。

Firefox 12は正常に動作します。

答えて

7

私は回避策が付属しています - 私は追加のダミーGETパラメータを持つAJAX要求を実行します - ?ajax = 1。この方法で、ブラウザは通常のHTMLコンテンツとJSONの違いを認識できます。それはユーザに影響を与えません。パラメータはFirebugでしか見ることができません。

+0

もう少し説明し、問題をどのように修正したか説明できますか? – Ryan

+0

私は、追加のGETパラメータ(この場合はajax = 1)ですべてのAJAXリクエストを作成しています。このパラメータは、バックグラウンドでのみ実行されるため、ユーザーには表示されません。 –

+0

URLが異なるため、ブラウザは完全なHTMLコンテンツとJSON AJAXコンテンツの違いを知ることができます。したがって、キャッシュされていないJSONコンテンツは表示されません。 http://ondrej.mirtes.cz/で私のホームページの機能をチェックすることができます。 –

関連する問題