JavaScript缓存之Service Worker workbox

目录

先来看看基础Service Worker 

注册阶段 

安装和激活

workbox

workbox-webpack-plugin

来看看结果


这次再做组件的库模式打包之后想着优化js加载,于是想到了大家用的并不是很多的Service Worker技术,这个技术类似于原生的离线包能力

先来看看基础Service Worker 

注册阶段 
if ('serviceWorker' in navigator) {navigator.serviceWorker.register('/service-worker.js').then(registration => {console.log('ServiceWorker registration successful with scope: ',registration.scope)}).catch(err => {console.log('ServiceWorker registration failed: ', err)})
}

来看看registration信息 

 需要注意的是,Service Worker 脚本除了域名为 localhost 时能运行在 http 协议下以外,只能运行 https 协议下

注册了一个 service worker,它工作在 worker 上下文,所以没有访问 DOM 的权限。

安装和激活
const addResourcesToCache = async (resources) => {const cache = await caches.open("v1");await cache.addAll(resources);
};self.addEventListener("install", (event) => {event.waitUntil(addResourcesToCache(["/","/index.html","/style.css","/app.js","/image-list.js","/star-wars-logo.jpg","/gallery/bountyHunters.jpg","/gallery/myLittleVader.jpg","/gallery/snowTroopers.jpg",]),);
});

在安装的时候预缓存网站的静态资源

还有一些涉及service work的工作可以参考MDN文档,里面涉及的一些基本用法也有写。只是很多时候我们不会去直接使用,而是用成熟的框架来达到我们的目的!! 


workbox

既然如此,我们最好是站在巨人的肩膀上,这个巨人就是谷歌。workbox 是由谷歌浏览器团队发布,用来协助创建 PWA 应用的 JavaScript 库。当然直接用 workbox 还是太复杂了,谷歌还很贴心的发布了一个 webpack 插件,能够自动生成 Service Worker 和 静态资源列表

workbox-webpack-plugin

添加 workbox-webpack-plugin 插件,然后调整 vue.config.js 文件(具体看自己工程配置): 

npm install workbox-webpack-plugin --save-dev
这里的urlPattern可以是链接也可以是正则匹配的规则路径等等

这样就可以直接达到我们的目的 

来看看结果

 

看起来就是和localStroage的显示形式差不多,也可以理解成一种缓存策略,只不过是运用多线程的技术,让js更优雅 


如果觉得有收获,麻烦给个赞和关注。你的鼓励是我写作的动力,大家一起学习一起进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/4914.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Html编写发射粒子爱心

下载html文件&#xff1a;https://download.csdn.net/download/m0_58419490/89963280 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>&#x1f497;</title>…

什么是分布式光伏发电?设备构成、应用形式讲解

分布式光伏发电系统&#xff0c;又称分散式发电或分布式供能&#xff0c;是指在用户现场或靠近用电现场配置较小的光伏发电供电系统&#xff0c;以满足特定用户的需求&#xff0c;支持现存配电网的经济运行&#xff0c;或者同时满足这两个方面的要求。 分布式光伏发电由哪些设备…

新160个crackme - 093-kesan

运行分析 需破解用户名和注册码 PE分析 Delphi程序&#xff0c;32位&#xff0c;无壳 静态分析&动态调试 ida找不到字符串&#xff0c;根据Delphi程序逻辑&#xff0c;双击进入cls_Unit1_TForm1查找 向下翻找后发现4个事件&#xff0c;逐个分析 动调_TForm1_Edit1Change函数…

OpenAI 的 正式版o1 模型意外泄露,推理能力真是震撼——事情是这样的

序言&#xff1a;无论 OpenAI 出于何种原因&#xff0c;用户的期待和认可都是关键。这次 o1 模型的泄露事件意外引发热议&#xff0c;也让用户有机会一窥 o1 的强大潜力。虽然 OpenAI 已推出 o1-preview 和 o1-mini 供用户试用&#xff0c;性能有所提升&#xff0c;但仍未展现最…

QCon演讲实录|徐广治:边缘云原生操作系统的设计与思考

10月18日&#xff0c;在 QCon 全球软件开发大会 2024&#xff08;上海站&#xff09;&#xff0c;火山引擎边缘云资深架构师徐广治围绕火山引擎边缘计算产品背后的算力底座 - 边缘云原生操作系统&#xff0c;探讨如何实现算力服务的混合部署和跨区域弹性调度&#xff0c;以及在…

「Mac畅玩鸿蒙与硬件31」UI互动应用篇8 - 自定义评分星级组件

本篇将带你实现一个自定义评分星级组件&#xff0c;用户可以通过点击星星进行评分&#xff0c;并实时显示评分结果。为了让界面更具吸引力&#xff0c;我们还将添加一只小猫图片作为评分的背景装饰。 关键词 UI互动应用评分系统自定义星级组件状态管理用户交互 一、功能说明 …

MySQL表设计(三大范式 表的设计)

1.上讲约束复习&#xff1a; 1.NOT NULL 非空约束&#xff0c;被指定NOT NULL的列&#xff0c;值不允许为空(必填) 2. UNIQUE 唯一约束&#xff0c;这个列里的值在表中是唯一的&#xff0c;也就是说不能重复 3. PRIMARY KEY 主键约束&#xff0c;可以看做是NOT NULL和UNIQUE…

继承机制深度解析:从基础到进阶的完整指南

文章目录 1. 继承的概念及定义1.1 继承的概念&#xff1a;1.2继承的定义&#xff1a;1.2.1 定义格式1.2.2 继承基类成员访问方式的变化&#xff1a; 1.3继续类模板 2. 基类和派生类间的转换2.1 向上转换&#xff08;Upcasting&#xff09;2.2 向下转换&#xff08;Downcasting&…

C++(类和对象-友元)

友元的作用 作用&#xff1a; 在C中&#xff0c;友元&#xff08;friend&#xff09;是一种特殊的类成员&#xff0c;它可以让一个函数或者类访问其他类的私有&#xff08;private&#xff09;和保护&#xff08;protected&#xff09;成员。 注意&#xff1a; 友元的使用应该谨…

ssm045基于jsp的精品酒销售管理系统+jsp(论文+源码)_kaic

毕业设计&#xff08;论文&#xff09; 精品酒销售管理系统 学 院 专 业 班 级 学 号 用户姓名 指导教师 完成日期…

解决return code from pthread_create() is 22报错问题

今天在处理芯片数据&#xff0c;在使用rma方法对数据进行预处理时报错&#xff0c;试了非常多的方法&#xff0c;记录一下。 可能时rma函数会涉及调用多线程的操作&#xff0c;这一过程会产生冲突。此错误表示在规范化过程中创建新线程时出现问题&#xff0c;特别是与 pthread_…

ChatPaper.ai - 3分钟读懂一篇论文的AI阅读助手

你是否曾经面对过这些困扰&#xff1f; 堆积如山的论文&#xff0c;不知从何读起 课堂笔记零零散散&#xff0c;复习时一头雾水 会议记录不完整&#xff0c;重要信息错过了 ChatPaper.ai就是为解决这些问题而生的智能助手。 地址&#xff1a;https://www.chatpaper.ai/zh …

0基础入门linux文件系统

目录 文件系统简介 1. 文件系统类型 2. 文件系统结构 3. 文件系统的主要功能 4. 文件系统的使用 5. 文件系统的维护 6. 注意事项 简单举例 机械硬盘 物理结构介绍​编辑 CHS寻址 逻辑结构介绍 LBA寻址法 文件系统与磁盘管理 Boot Block Data block inode block…

【docker入门】docker的安装

目录 Centos 7 添加docker 官方仓库到yum源 将 Docker 的官方镜像源替换为国内可以的 Docker 镜像源 安装docker 配置docker加速源 Ubuntu 创建 gpg key 目录 下载 gpg key 添加国内可用镜像源到 系统的 APT 仓库中 安装docker 配置加速源 Centos 7 添加docker 官方仓…

HTML前端页面设计静态网站-仿百度

浅浅分享一下前端作业&#xff0c;大佬轻喷~ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>百度&#xff08;伪&#xff09;</title><style>body {margin: 0;padding: 0;}.top-bar {dis…

C++虚表和虚基表

C虚表和虚基表 文章目录 C虚表和虚基表1.虚表/虚函数表(vtable)1.1概念1.2工作机制1.3虚表的特性 2.虚基表&#xff08;vbtable&#xff09;2.1概念2.2工作机制2.3虚基表的特性 3.深入认识虚基表3.1菱形继承对象模型3.2菱形虚拟继承对象模型 4.深入认识虚表4.1含有虚函数的类对…

网络安全求职指南_看完这篇就足够了~

概述 之前的文章给大家分析了安全行业目前的发展趋势、安全防御和渗透攻击两端不同的技术栈需求。在这篇文章里面&#xff0c;我们聚焦以下常见的安全行业求职和职业发展问题&#xff1a; 安全行业如何区分&#xff1f;安全岗位到底有哪些&#xff1f;不同安全岗位的技术需求…

python: Parent-child form operations using ttkbootstrap

# encoding: utf-8 # 版權所有 2024 ©塗聚文有限公司 # 許可資訊查看&#xff1a;言語成了邀功的功臣&#xff0c;還需要行爲每日來值班嗎&#xff1f; # 描述&#xff1a; 主、子表單 窗體傳值 Parent-child form operations # Author : geovindu,Geovin Du 塗聚文. …

能让企业“脱胎换骨”的局域网电脑监控软件,有哪些?

老板们&#xff0c;是不是发现现在员工们在上班时间玩得那叫一个欢&#xff0c;而工作却被丢在一边&#xff1f;别愁啦&#xff01;今天就给各位带来一份超赞的局域网电脑监控软件指南&#xff0c;这就像是给企业配上了 “超级放大镜”&#xff0c;员工的一举一动都能看得清清楚…

什么是计算机视觉算法?——深度剖析背后的技术与应用

计算机视觉&#xff08;Computer Vision&#xff09;作为人工智能的重要分支&#xff0c;正在逐渐改变我们的生活。从人脸识别到自动驾驶&#xff0c;从医疗影像诊断到视频监控&#xff0c;计算机视觉的应用无处不在&#xff0c;而支撑这一切的正是计算机视觉算法。那么&#x…