Chrome "Unresponsive Page" false-positive (自Chrome 32以来)

背景

自Chrome 32版本以来,一些前端开发者遇到了Chrome浏览器的一个问题:在加载网站时,页面非常迅速地响应,但仍然会出现“未响应”的弹窗。 这个问题通常被称为“Chrome未响应误报”。

这种错误可能会让用户认为网站已经崩溃或不可用,从而降低用户体验,并且对于那些依靠网络和前端技术进行业务的公司来说,也可能导致财务损失。

在本文中,我们将详细介绍此问题的原因、影响和解决方案,同时为您提供示例代码和指导意义。

原因

Chrome浏览器使用一种名为“进程隔离”的技术来提高浏览器的安全性和稳定性。该技术可以将每个标签页、插件和扩展都分配给单独的进程。如果一个网站变得不响应,例如由于死锁或无限循环等 JavaScript 问题引起的挂起,则浏览器可能会出现“Chrome未响应”警告。

有时,当JavaScript引擎正在处理大量数据或执行复杂的操作时,它可能会导致页面被标记为“未响应”。但实际上,这只是一个误报,网站仍然在运行。这种情况下,“Chrome未响应”警告可能会在几秒钟或更长时间后自己消失。

影响

这个问题可能对前端开发者和用户都带来一些负面影响:

  • 误导用户:当用户看到“Chrome未响应”警告时,他们可能会认为网站已经崩溃或不可用。 这会影响用户体验,并可能导致用户流失。
  • 浪费时间:由于出现误报,前端开发者可能要花费额外的时间来调试代码并查找不必要的错误。
  • 资金损失:对于那些依赖于网络和前端技术进行业务的公司,误报可能会导致流量减少和收入损失。

解决方案

虽然Chrome浏览器的“Unresponsive Page”警告是一个常见问题,但幸运的是有一些解决方案可以尝试。以下是一些可能有用的解决方案:

1. 分析JavaScript性能

在JavaScript代码中执行大量计算或访问大量数据可能导致页面变得不响应。如果您怀疑您的JavaScript代码正在导致此问题,请使用Chrome DevTools中的性能分析工具来确定性能瓶颈,然后优化代码。

以下是一个简单的示例:

-------- ---------------------- -
  --- ------ - ---
  --- ---- - - -- - -- ------ ---- -
    --- ------- - -----
    --- ---- - - -- - - -- ---- -
      -- -- - - --- -- -
        ------- - ------
        ------
      -
    -
    -- --------- -
      ---------------
    -
  -
  ------ -------
-

这个函数计算小于等于给定限制的所有质数。 如果您将限制设置为非常大的数字,则可能会导致Chrome浏览器出现“未响应”的警告。 您可以通过在性能分析器中运行此函数来验证这一点。

2. 停用插件和扩展

在某些情况下,特定的插件或

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/28755