2013-10-29 42 views
6

Web Workers是我不時刷新的技術,無論是作爲博客文章的主題,還是在演示文稿中提及。爲什麼Web Workers不再使用更多?

在更近的演講中,我參加了,揚聲器關於網絡工作者說:

我真的不知道他們爲什麼不使用更。

我意識到,有關於它的想法,對於這樣的明顯的好處& use cases,網絡工作者似乎有一個相當緩慢的,或窄採用的技術。

Web工作者是否存在一些固有的問題,使他們不那麼有用?我只是在錯誤的地方尋找他們使用的例子嗎?或者,一般來說,Javascript程序員並不特別習慣於創建多線程應用程序。

+1

這是一個意見問題,因此可能會被關閉作爲關閉主題的Stackoverflow。但這是一個有趣的問題。 – Spudley

+1

@Spudley我很害怕 - 但我對人們的觀點感興趣,但它持續不過。 –

+0

我認爲通過一些改寫可以使它更客觀一點 - 一個問題與網絡工作人員提出的阻止採用的問題可能會很廣泛,但我認爲它會比目前的基於意見的問題更好。 –

回答

5

的主要原因,他們不習慣太多(在我看來):

  1. 慣性。他們是一個相對較新的技術,人們還沒有花時間去學習它們。你去談論它,這意味着你超前了曲線;還有很多人甚至還沒有聽說過「網絡工作者」這個詞,更不用說考慮編碼了。

  2. 瀏覽器兼容性。舊版瀏覽器不支持它們。大多數人仍然需要爲他們的網站至少支持IE8,所以不能使用這樣的技術。

  3. 爲什麼要麻煩?使用新技術的唯一原因是解決問題或實現新功能。大多數網站沒有任何網絡工作者的真正需求。或者即使他們這樣做,他們也不會看到的需要。

  4. 沒有足夠的光澤。網絡是一個非常可視化的媒體,過去幾年中很多新的瀏覽器功能都非常直觀。如果看起來好,說服別人嘗試新功能很容易。網絡工作者完全是非視覺的;好處是抽象的。開發人員可以得到它,但對於大多數公司什麼要花費時間和金錢,以提高網站的決定是由非開發者所做的,這使得它更難網絡的員工,在看看。

+0

有趣的是,我發現「新技術」慣性在Web開發中比其他領域中不常見。 我的意思是我的問題更多的是與圖書館的創造者在一起,這同時解決了第三點,使第二點變得尤爲重要。我想[Modernizr](http://modernizr.com/)提供了一個簡單的漸進增強路徑?在任何情況下,我都會認爲這對於諸如遊戲庫[{1}](http://craftyjs.com/)之類的東西來說是不可思議的(有些東西如尋路等等)。 感謝您的反饋! –

0

我的意見:

  1. 只有當你需要大量的計算時,它們才能正常工作。在其他情況下,您可以放鬆分享資源的時間,合併。
  2. 需要額外的編碼。
  3. 對於簡單的任務,他們沒有提供太多的好處,JS通常不會做大量的計算。
  4. 不適用於每個瀏覽器,IE8,ie9不支持它(http://caniuse.com/webworkers
  5. 工作者沒有DOM訪問權限。
  6. 有些人只是使用setTimeout,setInterval代替,但在這些不是多威脅,只有1個CPU同時工作。
  7. 它們不能很好的工作,那麼只有1個CPU。編輯:您可以從後臺運行進程中受益。
  8. 有時難以共享資源,需要花費太多時間,最終效果並不好。

但是當你需要做大量的計算,或者在後臺運行重的過程,你可以忽略舊的瀏覽器,網絡工作者的作品真的很好。

+0

我不確定第7點是否有效。線程調度仍然比沒有任何事情好,即使在非交易的情況下也只限於單個處理器。 CPUs很聰明:) –

+0

同意,更新並增加更多信息。 – ViliusL

0

通常情況下,帶有計算的網站是Intranet網站。大多數大公司都使用微軟產品,他們使用IE作爲瀏覽器。擁有最新版本的IE並不容易,因爲升級可能會破壞許多Intranet網站。目前我的公司使用IE 9,他們打算去IE 10可能在2年....我有很多應用程序可以使用Web Workers,但我不能,因爲我沒有IE 10 ..

1

沒有大部分的API支持在工作人員中,使他們對我的許多項目的使用有所遏制。

Firefox在v35之前不會支持Websocket,v34中的performance.now並且沒有IndexedDB支持的日期。 Chrome最近只在v38中添加了TextEncoder/Decoder,並且無法傳遞ImageData。一些功能可以被削弱,但其他功能可能無法或者特別令人痛苦,無法繞開目標。

WebSockets尚未完成。