Web Workers为什么不使用更多?

时间:2013-10-29 10:20:45

标签: javascript multithreading html5 web-worker

Web Workers是我不时反思的一项技术,无论是作为博客文章的主题,还是在演示文稿中提及。

在我参加的最近一次演讲中,发言人谈到网络工作者:

  

我不确定他们为什么不再使用它们。

我意识到,考虑到这一点,对于具有如此明显优势的技术而言, use cases,网络工作者似乎采用了相当缓慢或狭窄的采用方式。

Web工作者是否存在一些固有的问题,使它们不那么有用?我只是在错误的地方寻找他们使用的例子吗?或者是Javascript程序员一般不习惯于创建多线程应用程序。

5 个答案:

答案 0 :(得分:8)

他们使用不多的主要原因(在我看来):

  1. 惯性。他们是一种相对较新的技术,人们还没有花时间去学习它们。你去讨论它,这意味着你已经走在了前面;那里有很多人甚至都没有听过“网络工作者”这个词,更不用说编写它们了。

  2. 浏览器兼容性。旧版浏览器不支持它们。大多数人仍然需要为他们的网站支持至少IE8,所以不能使用这样的技术。

  3. 为什么要这么麻烦?使用新技术的唯一原因是它解决了问题或实现了新的目标。大多数网站对网络工作者没有任何实际需求。或者即使他们这样做,他们也不会

  4. 不够光亮。网络是一种非常直观的媒体,过去几年中许多新的浏览器功能都非常直观。如果看起来好,很容易说服别人尝试新功能。网络工作者完全是非视觉的;好处是抽象的。开发人员可能会得到它,但对于大多数公司来说,关于花费时间和金钱来改进网站的决定是由非开发人员做出的,这使得网络工作者更难以查看。

答案 1 :(得分:1)

没有工作人员支持的大多数API对我们的许多项目的使用造成了影响。

Firefox在v35之前不会支持Websocket,在v34中没有performance.now,并且没有IndexedDB支持的日期。 Chrome最近才在v38中添加了TextEncoder / Decoder,并且无法传递ImageData。 某些功能可以填充,但其他功能不能,或者特别痛苦地解决目的。

WebSockets尚未完成。

答案 2 :(得分:1)

由于这个问题的大多数答案都已经过了几年,所以这是我对截至2019年5月的当前状况的看法。

Web Workers are now supported in commonly-targeted browsers,我认为浏览器支持不再是其使用的主要障碍。尽管如此,Web Workers仍然不常用,与我互动的大多数Web开发人员都不使用它们。

当然,并非每个网站都需要进行足够的繁重工作来证明Web Worker的合理性。许多网站根本不需要JavaScript。因此,我不希望现实中的大多数网站都看到Web Worker。

但是,“繁重的工作”并不是证明Web Worker合理的唯一因素-另一个是易用性。在许多情况下使用Web Workers都是一项重大挑战。请注意,Web Worker API涉及将构建输出拆分为单独的文件,或者在运行时生成该代码(例如,使用数据URI或fn.toString())。 Web开发人员使用许多不同的构建系统,并且在他们的项目中经常有很多依赖项。配置项目以创建具有正确依赖关系的这些其他构建工件可能很困难,或者至少随您拥有的构建系统而有所不同。

此外,对于每个单独的项目,每个Web开发人员几乎总是必须完成这项工作。如果WW通常在开发人员已经依赖的流行库和框架中使用,则可以期望Web Worker的采用率更高。但是它们并不是(出于与API相关的原因,如果我不得不猜测的话),即使对于执行大量同步工作的库也是如此。只要使用主线程是默认的,最简单的操作,这就是大多数开发人员将继续做的事情。

答案 3 :(得分:0)

我的意见:

  1. 只有在需要大量计算时,它们才能正常工作。在其他情况下,您没有时间共享资源,合并。
  2. 需要额外编码。
  3. 对于简单的任务,他们没有太多的好处,JS通常没有做很多计算。
  4. 不适用于所有浏览器,IE8,ie9不支持它(http://caniuse.com/webworkers
  5. 在工作人员中没有DOM访问权。
  6. 有些人只是使用setTimeout,而不是setInterval,但这些不是多重威胁,只有1个CPU在同一时刻工作。
  7. 它们运行不正常,只有1个CPU。编辑:您可以从后台运行流程中受益。
  8. 有时很难共享资源,需要花费太多时间,最终结果不好。
  9. 但是当您需要进行大量计算或在后台运行繁重的流程时,您可以忽略旧浏览器,网络工作人员的工作效果非常好。

答案 4 :(得分:0)

通常,计算的网站是Intranet网站。大多数大公司使用微软产品,他们使用IE作为浏览器。拥有最新版本的IE并不容易,因为升级可能会破坏许多内部网站点。目前我的公司使用IE 9,他们计划在2年内使用IE 10 ....我有很多可以使用Web Workers的应用程序,但我不能,因为我没有IE 10 ......