为什么不以浏览器特定的字节码发送 JavaScript 文件? [关闭]

2024-03-28

JavaScript 没有通用的字节码,但大多数 JavaScript 引擎都有自己的字节码。由于 JavaScript 文件作为源代码字符串传输,因此它们必须在执行之前将源代码字符串解析/编译为字节码。

但是,由于我们可以在 HTTP 请求中指定用户代理类型(例如浏览器类型和版本),难道我们不能让服务器为每个浏览器保留字节码并做出相应的响应以节省客户端的时间吗?

是什么阻止我们采取这种方法?我不认为浏览器不会有任何问题,即使某些 JavaScript 文件以字节码形式给出,而其他文件则以源字符串形式给出。同样,我们在Python中有.pyc文件,并且它与.py文件一起运行得很好。

[Update]我能想到的潜在好处如下。

  1. 您可以节省客户端的解析时间。解析速度很快,但对于低端设备可能值得这样做。
  2. 您可以在字节码中添加一些提示。例如,JavaScriptCore(WebKit 的 JavaScript 引擎,简称 JSC)使用运行时收集的信息(例如类型)来修补字节码。 JSC 的字节码的设计方式是为此类信息提供插槽。

在可维护性方面,如果客户端的浏览器不支持,服务器总是可以发送原始源代码字符串,并且没有那么多不同的JavaScript引擎。支持四种最流行的浏览器(Chrome、Firefox、IE 和 Safari)对我来说似乎是可行的。此外,我没有看到字节码指令集经常变化。


  • 所有引擎都需要公开其字节码格式
  • 服务器需要保存很多不同的字节码文件,甚至动态编译它们
  • 浏览器检测充满危险(用户代理撒谎、代理缓存)
  • 字节码规则可能会在浏览器的次要版本之间发生变化
  • 性能提升可能不会那么显着(特别是与网络传输时间相比)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么不以浏览器特定的字节码发送 JavaScript 文件? [关闭] 的相关文章

随机推荐