星期日, 17 8 月, 2025
No Result
View All Result
育心文具行

育心文具行

  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我
育心文具行
  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我
No Result
View All Result
育心文具行
Home 筆記x備忘

前端 web worker 筆記

2023-10-06
in 筆記x備忘
Reading Time:3 mins read
A A
0

關於前端的 JS 技術還真的是需要筆記的內容。

這次把 web worker 記錄起來,這是幾年前就有應用的功能,也是一個古老的技術了,意外的其實滿常使用的。

先重點整理,首先是 Web Worker 的介紹:

  1. 解決 js 單執行緒的工具(web worker 產生 OS 層級的執行緒),避免被放到 event queue 中排隊,參考、參考。
  2. 解決 js 中 setInterval() 因瀏覽器節流模式嚴重失準,參考。
  3. 應用在大量背景運算、長時間的 I/O運作(例如計時器)、避免分頁長時間閒置導致 js 不運作(例如觸發事件時的通知音效)的問題。
  4. 在多核心 cpu 的 Client 端上,使用 web worker 優勢會比較看得出來(通通跑起來)。

這裡有一篇幾年前製作的 web worker DMEO,實作計時器功能,如果使用 setTimeout() 或是 setInterval() 方法很容易因為各種原因造成時間失准的問題。這裡也有一份 Mozilla 提供的 DMEO。這裡有份教學。

實作上:

  1. Main Script 和 Worker Script 實作 postMessage() 和 worker onmessage 事件拋接資料,參考。
  2. 常用有 Dedicated 和 Shared 兩種,差異在 Shared Web Worker 不會因為在同網站中換頁而消失(e.g. 購物車、聊天室..)。
  3. 有一個不太常用的功能 Embedded workers ,主要是利用了HTML5 的 data block 功能,就是想辦法把 web worker 塞在同一個 html 裡面。
  4. Main Thread 和 Worker Thread 彼此之間拋接資料使用參數,該參數是 call by value 的模式。

需要注意的部分:

  1. Web Worker 和 Service Worker 是不一樣的東西,參考。
  2. 雖然機會不高,在技術規劃時先確認使用的網頁載體是否支援相關技術; Android 設備在使用 webview 技術時,也會有遇到處理 webview 碎片化的問題,使用的替代套件要記得確認一下。
  3. 使用 web worker是做背景運算, UI 操作還是要回 UI Thread 上操作,規劃製作時需要注意維護的成本,除了效能之外,也要確認切分後可讀性。
  4. 需要注意耗能的問題,也就是除了網頁載體(瀏覽器/核心)的層面,可能用戶端也需要考慮一下。
  5. 資料拋接時,如果遇到大的物件參數(例如 20+mb 的 Array/JSON ),資源消耗就偏大,參考使用 Transferable Objects 方式來解決,參考、參考、參考。

附上參考文章。這篇是目前查到最詳盡的介紹:

使用 Web Workers – Web APIs | MDN

developer.mozilla.org

Web Workers 提供簡單的方法讓網頁在背景執行緒 (Thread) 中執行程式,而不干擾使用者介面運行,另外,Worker 也可以利用 XMLHttpRequest 執行輸出/輸入(但是 responseXML 和 channel 這兩個屬性為 null);一個 worker 可以藉由事件處理器來和 web worker 創造端互相傳送訊息,接下來本文會提供使用 web worker …

我們可以查到 web worker 支援的瀏覽器(唉)有哪些。目前看來主流瀏覽器包含手機都是支援的,有一個特別紅的是 Opera Mini,不過這個應該市佔率不高:

Web Workers | Can I use… Support tables for HTML5, CSS3, etc

caniuse.com

Tags: javascriptweb worker瀏覽器
Share22Tweet14
Previous Post

《灰階思考》第二部讀書心得

Next Post

《灰階思考》第三部讀書心得

Related Posts

筆記x備忘

實作 js 函式庫包裝為 API 提供給後端呼叫

最近在想有滿多 js 實作資料處理的函式...

2025-02-04
100
Load More
Next Post

《灰階思考》第三部讀書心得

( ( ( ( ( bomb, angry bird. muted colors. ) ) ) ) ) by jean - baptiste monge!!!!!!!!!!!!!!!!!!!!!!!!!!!

關於情緒穩定這件事

award winning photography of new york city from an unusual viewpoint, long exposure

《灰階思考》第四部讀書心得

全站搜尋

No Result
View All Result

關於我

育心文具行

Jerry Lin

程式設計師

育心文具行是一家文具店,老闆的小兒子是一個設計師,職業是設計程式,興趣是設計人,倒是還沒有實作的機會。
--
所有的相遇都不是巧合。
在廣告公司待了三年有兩年多在做內容產品,離職後繼續在內容產業走了四年多,最後選則離開台灣的公司體制在家 SOHO ,碰上了 2020 年疫情才知道原來自己這是走在時代的潮流尖端。 感謝許多老闆和貴人相助,至今目前尚能存活,在台北街頭努力著。

近期文章

  • LLM 生成參數清單與說明
  • 使用 google 的 Gemini CLI 來製作字幕
  • 2025-07-29 社交模式檢討
  • 2025-07-25 社交模式檢討
  • 2025-07-12 N8N Workshop 筆記心得

分類

  • 心得x體驗 (47)
  • 筆記x備忘 (79)
  • 閒談x雜記 (15)

贊助買咖啡

Facebook Instagram RSS

標籤

android ci4 cloudflare Codeigniter codeigniter 4 flutter git ios linode linux MAC macos nginx php plugin QBQ!問題背後的問題 server work sublime sublime text vps vue.js vue3 What if What If? 如果這樣,會怎樣? wordpress 備份 原則 團隊,從傳球開始 團隊,從傳球開始:五百年都難以超越的 UCLA 傳奇教練伍登培養優越人才和團隊的領導心法 外掛 如果這樣,會怎樣?:胡思亂想的搞怪趣問 正經認真的科學妙答 媒體識讀 工作的原則 心得 意志力 活動心得 灰階思考 第三部分 第二部分 第四部分 股癌 自慢10 自慢10:18項修練 謝孟恭 讀書心得

文章分類

  • 心得x體驗 (47)
  • 筆記x備忘 (79)
  • 閒談x雜記 (15)

近期文章

  • LLM 生成參數清單與說明
  • 使用 google 的 Gemini CLI 來製作字幕
  • 2025-07-29 社交模式檢討
  • 2025-07-25 社交模式檢討
  • 2025-07-12 N8N Workshop 筆記心得

近期留言

  • 「Bolin Lai」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言
  • 「Jerry Lin」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言
  • 「JCL」於〈WordPress 之中藍新金流開啟後, Elementor 外掛有時會打不開的問題處理〉發佈留言

文章月曆

2025 年 8 月
日 一 二 三 四 五 六
 12
3456789
10111213141516
17181920212223
24252627282930
31  
« 7 月    

© 2020 hipster.crazyjerry.studio - a blog about experience, notes and nonsense, by Jerry Lin.

No Result
View All Result
  • 首頁
  • 心得x體驗
  • 筆記x備忘
  • 閒談x雜記
  • 我的工具箱
  • 關於我

© 2020 hipster.crazyjerry.studio - a blog about experience, notes and nonsense, by Jerry Lin.