【问题标题】:Google Chrome web page refresh broken谷歌浏览器网页刷新坏了
【发布时间】:2016-02-03 01:24:35
【问题描述】:

谷歌浏览器版本 48.0.2564.97 m

在应用中按“重新加载”按钮(或按 F5)时,许多 Intranet Web 应用无法加载。

页面第一次加载正常,但是你在页面上并进行刷新,页面加载失败。

  • 此问题始于 Chrome v48
  • 如果您执行“硬刷新”(Shift F5),页面重新加载正常
  • 如果服务器不为 javascript 页面发送 304 并强制发送 200(无缓存控制),则页面加载正常。
  • 所有这些在其他浏览器中都可以正常工作
  • 有问题的应用程序使用 dojo javascript 框架(旧版本)

由于初始加载工作正常,这似乎与 Chrome 处理客户端缓存的 javascript 文件的方式有关。

有什么想法吗?

【问题讨论】:

  • 开发者控制台有错误吗?
  • @GavinR 存在 JavaScript 错误。开发人员网络面板所说的 JavaScript 文件没有加载,因为它们没有被修改 (304) 就像它们根本不可用一样。这些文件中的函数都不可用,这会导致下游 JavaScript 错误

标签: google-chrome dojo


【解决方案1】:

您在 Chrome 中遇到了一个错误 - https://code.google.com/p/chromium/issues/detail?id=570622

基本上,当 Dojo 执行 XMLHttpRequest 来加载模块并且服务器以 304 响应时,Chrome 会传回一个空响应主体,而不是从缓存中提取原始响应。不出所料,Dojo 认为这是一个错误。

正如您所说,强制服务器执行完整的 200 响应可以解决问题,我正在使用一些 Apache HTTPD 配置来去除触发我的 JavaScript 文件 304 的请求标头:

<LocationMatch "^/portal/static/.*\.js$">
    RequestHeader unset If-Modified-Since
</LocationMatch>

Chromium 问题已经有一个补丁,所以希望这个问题会在下一个 Chrome 版本中得到修复。

【讨论】:

  • 很高兴知道。希望修复程序尽快推出。谢谢@Zorac
  • 版本 48.0.2564.103 m 已发布,此问题现已修复。
猜你喜欢
  • 2023-03-16
  • 2017-11-24
  • 2016-05-09
  • 2017-08-09
  • 2010-09-07
  • 2018-10-15
  • 2018-10-05
  • 1970-01-01
  • 2016-01-22
相关资源
最近更新 更多