浏览器上的SharedWorker是干啥的?
他与serviceworker又有啥不同?
网友回复
SharedWorker 是一种在多个标签页、iframe 或者浏览器实例之间共享的后台线程,例如每个页面都有websocket请求,那么相同的页面多tab 打开或iframe嵌套会产生多次websocket请求,如何websocket请求放到shareworker中,接受和发送都由shareworker来中转,那么任意个同域名页面只需要一次websocket请求就好了。
SharedWorker 允许不同的脚本运行在同一个共享的工作线程上,这样它们就能够共享同样的数据连接或者进行通信。
而 ServiceWorker 主要用于实现离线体验、消息推送和后台同步等功能。ServiceWorker 充当了 web 应用程序、浏览器与网络之间的代理服务器。它允许网站拦截和处理网络请求,包括根据网络可用性动态地加载离线页面。
不同点主要包括:
生命周期:ServiceWorker 是长生命周期的,即使标签页关闭了也可存在,直到被明确地终止。而 SharedWorker 仅在至少一个标签页使其处于活动状态时才存在。
用途:SharedWorker 适合做数据共享和脚本通讯,而 ServiceWorker 更适合做资源缓存和离线内容提供。
作用范围:ServiceWorker 可以控制整个域下的多个页面,它与具体页面独立;SharedWorker 则是由创建它的同源页面共同控制。
通信方式:SharedWorker 与页面间的通信依赖于 postMessage 接口;ServiceWorker 的通信则依赖于监听和触发事件。
以下是一个简单的 SharedWorker 示例代码:
SharedWorker 的 JavaScript 文件 testworker.js:
const ports = []; self.onconnect = (e) => { const port = e.ports[0];...
点击查看剩余70%
openai发布的agentkit与coze扣子、dify等流程搭建智能体有啥不同?
阿里云上的ecs镜像存储还要钱,如何免费下载到本地以后再创建?
如何通过调用大模型api实现输入一个商品图片生成模特展示解说的宣传短片?
qwen千问大模型api如何内置互联网搜索?
YOLO如何结合opencv实现视觉实时摔倒检测?
html中内嵌style与link引入css代码报错的处理机制不同?
coze扣子中调用seadream4多参考图修改ps图片如何返回图片尺寸设为第一个图片的尺寸?
coze扣子中如何将原图缩放到指定尺寸?
如何解决传大文件突然断网重传的问题?
CefSharp与Electron开发桌面应用哪个更好?