7

我在 Chrome 19 中遇到了一个奇怪的错误。我实现了一个支持 pushState 的完整 AJAX 网站(每个非外部链接都通过 AJAX 请求打开)。我通过 JSON 格式以 AJAX 传输 HTML 片段。

当我通过外部链接离开我的网站然后返回时,Chrome 会为该 URL 呈现缓存数据 - 问题是,他缓存 JSON 内容并显示它,而不是完整的网页。

这可以通过这些步骤重现(更新:从那时起我在我的网站上删除了 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 工作正常。

4

1 回答 1

7

我提供了一个解决方法 - 我使用额外的虚拟 GET 参数执行 AJAX 请求 - ?ajax=1。通过这种方式,浏览器可以识别通常的 HTML 内容和 JSON 之间的区别。它对用户没有任何影响,该参数仅在 Firebug 中可见。

于 2012-06-16T22:13:58.233 回答