Web Workers

????????12月20號(hào)發(fā)布的Safri瀏覽器內(nèi)核webkit表示自己開(kāi)始支持service workers牺丙,這就意味的主流瀏覽器(window下的chorme和Firefox丈秩,ios下的Safri,ie.....嗯苍糠,先不管他)都支持service workers木张,web app離線緩存頁(yè)面將不是夢(mèng)~

????????Service workers 其實(shí)是web workers中的一種類(lèi)型咳蔚,所以在學(xué)習(xí)使用service workers之前,我們先來(lái)看看web workers是啥锯茄,有哪些類(lèi)型厢塘,都能做些什么

整體介紹:

????????Web Workers 使script能夠單獨(dú)地運(yùn)行在一個(gè)獨(dú)立的線程中,這意味著我們可以將一些有復(fù)雜的邏輯計(jì)算的js放在其他線程下工作肌幽,而不去阻塞主線程(一般是ui渲染)的運(yùn)行


概念和使用:

????worker是通過(guò)構(gòu)造函數(shù)【Worker(filterName.js) 】生出來(lái)的Object晚碾,這個(gè)js文件里寫(xiě)的代碼會(huì)單獨(dú)運(yùn)行在一個(gè)新的執(zhí)行環(huán)境(context)中而不是當(dāng)前的window,這個(gè)工作環(huán)境其實(shí)是一個(gè)DedicatedWorkerGlobalScope對(duì)象喂急,(對(duì)于dedicated類(lèi)型的worker是他格嘁,對(duì)于shared類(lèi)型的worker是SharedWorkerGlobalScope).

????理論上在這個(gè)worker線程下你想干啥就干啥,但是還是有一些例外煮岁,比如讥蔽,你沒(méi)有辦法在worker中直接操作dom,也沒(méi)辦法使用window對(duì)象一些默認(rèn)的方法和屬性画机,不過(guò)呢冶伞,window下還是有很多功能你可以直接使用滴,像webSockets步氏,一些存儲(chǔ)工具indexedDB啊响禽,還有一個(gè)火狐瀏覽器搞的Data Store啊~,具體請(qǐng)參考?Functions and classes available to workers

????workers與主線程間通過(guò)messages渠道來(lái)傳遞數(shù)據(jù)荚醒,發(fā)送message的方法都是postMessage,接受數(shù)據(jù)都是通過(guò)監(jiān)聽(tīng)onmessage事件芋类,值得注意的是數(shù)據(jù)在傳輸時(shí)是通過(guò)復(fù)制的方法而不是共享~

????有的時(shí)候,workers可能會(huì)生成新的workers....界阁,只要這些構(gòu)建這些workers的js文件在同一源下就可以了侯繁。worker 可以通過(guò)XMLHttpRequest來(lái)訪問(wèn)網(wǎng)絡(luò),只是XMLHttpRequest的responseXML和channel這兩個(gè)屬性將總是null泡躯。


workers類(lèi)型

????除了dedicated(專(zhuān)用)類(lèi)型的workers,還有下面幾種類(lèi)型

? ? SharedWorkers

????????共享類(lèi)型的workers可以被好幾個(gè)scripts運(yùn)行在同一個(gè)源中不同的windows下贮竟,IFrames下丽焊,等等....,相比較dedicated workers咕别,shared workers更復(fù)雜一點(diǎn)是因?yàn)樵谶M(jìn)行傳輸時(shí)需要啟動(dòng)port技健,具體請(qǐng)參考SharedWorker

? ? ServiceWorkers

????????ServiceWorkers一般作為web應(yīng)用程序、瀏覽器和網(wǎng)絡(luò)(如果可用)之前的代理服務(wù)器惰拱。主要的作用是:

? ? ? ? ? ? 1.后臺(tái)消息傳遞

? ? ? ? ? ? 2.網(wǎng)絡(luò)代理雌贱,轉(zhuǎn)發(fā)請(qǐng)求,偽造響應(yīng)

? ? ? ? ? ? 3.離線緩存偿短,并且會(huì)在網(wǎng)絡(luò)是否合適的情況下采取合適的行動(dòng)更新駐留在服務(wù)器上的資源

? ? ? ? ? ? 4.消息推送

? ? Chrome Workers

ChromeWorker?是火狐瀏覽器自己弄出來(lái)的東西欣孤,如果您正在開(kāi)發(fā)附加組件,并且希望在擴(kuò)展程序中使用worker昔逗,同時(shí)在你的worker中有訪問(wèn)js-ctypes的權(quán)限导街,那么你可以使用它。

????Audio Workers

????????Audio Workers可以直接在web worker的上下文中完成腳本化音頻處理纤子。


簡(jiǎn)單示例鏈接

dedicatedWorkesr:?github地址搬瑰,在線實(shí)例

SharedWorkers:github地址在線實(shí)例

ServiceWorkers:github地址控硼,在線實(shí)例


兼容性


源文章地址和參考資料:

https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API

http://web.jobbole.com/84792/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末泽论,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子卡乾,更是在濱河造成了極大的恐慌翼悴,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件幔妨,死亡現(xiàn)場(chǎng)離奇詭異鹦赎,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)误堡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)古话,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人锁施,你說(shuō)我怎么就攤上這事陪踩。” “怎么了悉抵?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵肩狂,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我姥饰,道長(zhǎng)傻谁,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任列粪,我火速辦了婚禮审磁,結(jié)果婚禮上荆秦,老公的妹妹穿的比我還像新娘。我一直安慰自己力图,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布掺逼。 她就那樣靜靜地躺著吃媒,像睡著了一般。 火紅的嫁衣襯著肌膚如雪吕喘。 梳的紋絲不亂的頭發(fā)上赘那,一...
    開(kāi)封第一講書(shū)人閱讀 52,713評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音氯质,去河邊找鬼募舟。 笑死,一個(gè)胖子當(dāng)著我的面吹牛闻察,可吹牛的內(nèi)容都是我干的拱礁。 我是一名探鬼主播,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼辕漂,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼呢灶!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钉嘹,我...
    開(kāi)封第一講書(shū)人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鸯乃,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后跋涣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體缨睡,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年陈辱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奖年。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沛贪,死狀恐怖拾并,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鹏浅,我是刑警寧澤嗅义,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站隐砸,受9級(jí)特大地震影響之碗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜季希,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一褪那、第九天 我趴在偏房一處隱蔽的房頂上張望幽纷。 院中可真熱鬧,春花似錦博敬、人聲如沸友浸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)收恢。三九已至,卻和暖如春祭往,著一層夾襖步出監(jiān)牢的瞬間伦意,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工硼补, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留驮肉,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓已骇,卻偏偏與公主長(zhǎng)得像离钝,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子褪储,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容