关于 SharedArrayBuffer 对象邮件的澄清说明

2021 年 3 月 19 日,星期五

有些网站所有者可能收到了来自 Google Search Console 的一封电子邮件,主题为“SharedArrayBuffers 的新要求”。我们通过反馈得知此邮件令大家感到困惑,因此想更深入地解释相关问题,便于您决定接下来可以采取的合适措施。我们还更新了有关如何实现跨域隔离的指南,在其中纳入更多详情。

为什么我收到了此邮件?

您之所以收到此邮件,是因为我们在发送此邮件之时检测到您网站上的 JavaScript 使用了 SharedArrayBuffer 对象。网站中包含的框架、库或其他第三方内容可能会导致出现这种使用情况。

什么是 SharedArrayBuffer

SharedArrayBuffer 是一个 JavaScript 对象,用于在网站上的线程之间共享内存空间。在发现名为 Spectre 的漏洞之前,多个网站便使用了该对象。但是,由于 Spectre 是 CPU 级漏洞,并且不太可能在可预见的未来得到修复,因此浏览器决定停用 SharedArrayBuffer 对象。

尽管 Chrome 在桌面设备中重新启用了该对象,使用网站隔离作为临时补救措施,但跨域隔离已成为安全启用 SharedArrayBuffer 对象的标准化方式。从版本 92(计划在 2021 年 5 月底发布)起,Chrome 将使用跨域隔离功能限制 SharedArrayBuffer 对象。Firefox 也在版本 76 中针对跨域隔离环境启用了 SharedArrayBuffer 对象。我们希望其他浏览器也会在不久之后采取这一措施。

检查您网站上 SharedArrayBuffer 对象的使用情况

您可以使用以下两种方法:

  1. 使用 Chrome 开发者工具 并检查重要网页。
  2. (高级方法)使用 Reporting API 将弃用报告发送给报告端点。

如需了解如何采用上述方法,请参阅确定网站的什么位置使用了 SharedArrayBuffer

后续步骤

我们建议您采取以下后续步骤:

  1. 确定网站的什么位置使用了 SharedArrayBuffer 对象。
  2. 确定是否需要使用该对象。
  3. 若要解决此问题,请移除相应功能或启用跨域隔离功能

如果您还没有听说过 SharedArrayBuffer 对象,但却收到了与之相关的 Search Console 邮件,很可能是因为您网站上的第三方资源在使用该对象。确定哪些网页受到了影响以及资源的所有者是谁后,请与资源提供商联系,让他们解决问题。

在 Chrome 92 发布后,未启用跨域隔离功能的 SharedArrayBuffer 对象将不再有效。实际上,这意味着您网站的 Chrome 用户可能会遇到与不支持 SharedArrayBuffer 对象的其他情形类似的性能下降情况。

即使您并未收到此邮件,我们仍希望此澄清说明对您有所帮助。如果您有任何疑问,建议您在搜索中心帮助社区中发帖提问,向其他专家寻求帮助。