星期四, 19 6 月, 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 年疫情才知道原來自己這是走在時代的潮流尖端。 感謝許多老闆和貴人相助,至今目前尚能存活,在台北街頭努力著。

近期文章

  • 於 MacOS 中,整合自然語言,自動化添加行事曆事件
  • 使用 deepwiki-open 針對程式碼產生 WIKI
  • 使用 Tailwind CLI 快速建立靜態 CSS 檔的基本步驟
  • Visual Studio Code 的 PHP CS Fixer 設定
  • MacOS 添加本地伺服器的 DNS

分類

  • 心得x體驗 (45)
  • 筆記x備忘 (77)
  • 閒談x雜記 (13)

贊助買咖啡

Facebook Instagram RSS

標籤

ai android cloudflare flutter git ios javascript linode linux MAC macos mis nginx php plugin QBQ!問題背後的問題 server work sublime sublime text vps vue.js vue3 What if What If? 如果這樣,會怎樣? wordpress 前端 原則 原子習慣 團隊,從傳球開始 團隊,從傳球開始:五百年都難以超越的 UCLA 傳奇教練伍登培養優越人才和團隊的領導心法 壓力測試 外掛 如果這樣,會怎樣?:胡思亂想的搞怪趣問 正經認真的科學妙答 心得 情緒 活動心得 灰階思考 約翰‧漢尼斯 股癌 自慢10 自慢10:18項修練 記錄 謝孟恭 讀書心得 這一生,你想留下什麼?

文章分類

  • 心得x體驗 (45)
  • 筆記x備忘 (77)
  • 閒談x雜記 (13)

近期文章

  • 於 MacOS 中,整合自然語言,自動化添加行事曆事件
  • 使用 deepwiki-open 針對程式碼產生 WIKI
  • 使用 Tailwind CLI 快速建立靜態 CSS 檔的基本步驟
  • Visual Studio Code 的 PHP CS Fixer 設定
  • MacOS 添加本地伺服器的 DNS

近期留言

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

文章月曆

2025 年 6 月
日 一 二 三 四 五 六
1234567
891011121314
15161718192021
22232425262728
2930  
« 5 月    

© 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.