我在 Chrome 19 中遇到了一个奇怪的错误。我实现了一个具有 pushState 支持的全 AJAX 网站(每个非外部链接都是通过 AJAX 请求打开的)。我通过 JSON 格式在 AJAX 中传输 HTML 片段。
当我通过外部链接离开我的网站然后返回时,Chrome 呈现该 URL 的缓存数据 - 问题是,他缓存 JSON 内容并显示它,而不是完整的网页。
这可以通过这些步骤重现(更新:从那时起我在我的网站上删除了 AJAX 功能,所以这个错误不再出现):
- 打开http://beta.mirtes.cz/
- 点击第二个日期链接(2012 年 6 月 16 日在“这一切都始于一封奇怪的电子邮件”旁边)。此页面(您现在位于 http://beta.mirtes.cz/it-all-began-with-a-strange-e-mail)是通过 AJAX 加载的。
- 点击“一切始于一封陌生的电子邮件”。您被重定向到外部网站。
- 页面完全加载后,点击 Chrome 中的“返回”。
我尝试使用 Cache-Control: no-cache 发送所有 AJAX 响应,但没有效果。
Firefox 12 运行正常。
最佳答案
我想出了一个变通方法 - 我使用额外的虚拟 GET 参数执行 AJAX 请求 - ?ajax=1。这样浏览器就可以识别通常的 HTML 内容和 JSON 之间的区别。它对用户没有任何影响,该参数仅在 Firebug 中可见。
关于Chrome 中的 Ajax + pushState 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11059154/