当前位置: 首页 > news >正文

uniapp h5下pwa模式缓存问题

当我们把h5添加到桌面后,有新的版本更新上去,在网页h5打开是更新了最新版本,但在添加到桌面后的伪应该上没有更新到最新代码

这是有关于Service Worker机制的问题,它是浏览器后台的一个脚本,能拦截和处理网络请求和管理缓存,这个处理了也能做到离线访问。

有兴趣的可以看看:https://blog.csdn.net/JHXL_/article/details/143612304这个的讲解

下面我们讲一下使用方法

我们可以在html里添加js代码

html

<script>
// 确保浏览器支持 Service Worker 注只能在本地运行或https看到效果,http不支持
if ('serviceWorker' in navigator) {
// 在页面完全加载后才开始注册,避免阻塞主线程
window.addEventListener('load', () => {
// 注册 Service Worker 文件,路径应指向 /static/sw.js
navigator.serviceWorker.register('/static/sw.js')
.then(registration => {
console.log('Service Worker 注册成功:', registration.scope);
})
.catch(error => {
console.log('Service Worker 注册失败:', error);
});
});
}
</script>

 然后我要新建一个sw.js文件,这个文件放在你打包后项目能够访问到的文件夹中,我是放在/static/下的

image

 sw.js

// 每次部署新代码时,手动或通过构建工具递增版本号 (v3, v4, v5, etc.)
// 这是强制 Service Worker 更新的关键!
const CACHE_NAME = 'my-app-cache-v1';
const urlsToCache = ['/','/static/logo.png','/static/manifest.json','/static/manifest.webmanifest',// 确保这里包含了所有App Shell 必需的静态文件
];
// --- 1. 安装阶段 ---
self.addEventListener('install', event => {// 关键优化:强制新 Service Worker 立即激活,跳过等待状态// self.skipWaiting();
  event.waitUntil(caches.open(CACHE_NAME).then(cache => {console.log('[Service Worker] Caching all: app shell and content');return cache.addAll(urlsToCache);}));
});
// --- 2. 激活阶段 ---
self.addEventListener('activate', event => {// 关键优化:一旦激活,立即接管所有客户端// event.waitUntil(self.clients.claim());
  event.waitUntil(caches.keys().then(cacheNames => {return Promise.all(cacheNames.map(cache => {if (cache !== CACHE_NAME) {// 清理旧缓存console.log('[Service Worker] Deleting old cache:', cache);return caches.delete(cache);}}));}));
});

当然后还有一个方法是拦截请求缓存离线的,但我的需求是有新的代码更新时就立即更新,所以我不需要拦截方法三,有需求的小伙伴可以自行搜索看看

自此完毕

 

http://www.jsqmd.com/news/22144/

相关文章:

  • 别慌!恢复已删除数据的 10 个卓越技巧,小白也能会
  • 删除“幽灵依赖”文件,如何删除残留文件
  • CRMEB的PHP版本跨域问题
  • 2025 医疗级胶水厂家最新推荐榜单:权威测评 + 实力厂家甄选,聚焦合规性与技术创新
  • NUIST-OOP-Lab02
  • 2025 年最新推荐!国内球墨铸铁管厂家排行榜:涵盖离心 / 市政 / 防腐 / 给水 / 水利工程用,助力工程高效选材
  • DHCP 泛洪攻击小实验
  • 2025 年热转印花膜优质厂家最新推荐排行榜:聚焦产品质量与客户满意度,涵盖硅胶 / 五金 / 塑胶等多材质应用场景
  • 2025 年国内除湿机厂家最新推荐排行榜:工业 / 家用场景优质品牌精选指南仓库 / 大型 / 车间除湿机公司推荐
  • 题解:P13611 [NWRRC 2022] New Time
  • 2025 年模板加固源头厂家最新推荐榜:优质企业权威测评出炉,含高精 / 剪力墙等多类型模板加固品牌
  • 102302155张怡旋数据采集第一次作业
  • 序列异或求贡献
  • 深入解析:Java外功精要(2)——Spring IoCDI
  • 2025年矩形橡胶支座源头厂家权威推荐榜单:GJZ矩形橡胶支座/圆形橡胶桥梁支座/桥梁橡胶支座源头厂家精选
  • 2025年永磁同步变频器加工厂权威推荐榜单:高压变频柜装置/通用矢量变频器/高压变频器源头厂家精选
  • 首批CCF教学案例大赛资源上线:涵盖控制仿真、算法与机器人等9大方向 - 教程
  • HT-PBR-0006SMG:20W 连续、3 相位失衡,一颗贴片省掉整块匹配网络
  • 2025年人字纹机织布源头厂家权威推荐榜单:700g机织布/锦纶工业用布/800g机织布源头厂家精选
  • 双模更超模!飞利浦双模办公娱乐显示器27E2N5900RW优雅登场! - 实践
  • Day4无序,有序和定义列表
  • 技术管理
  • 威胁狩猎平台升级:全新认证机制与功能增强
  • SpringMVC 启动与请求处理流程解析 - Higurashi
  • 精读C++20设计模式——结构型设计模式:享元模式 - 实践
  • Java 企业 AI 转型选什么?JBoltAI 框架:20 + 大模型 + 向量数据库,AI 应用超灵活
  • 20232401 2025-2026-1 《网络与系统攻防技术》实验三实验报告
  • 2025 年破胶机厂家最新推荐排行榜:聚焦 610/710/810 型及大型自动低温环保设备,精选优质企业
  • 实用指南:音视频学习(六十七):音视频像素格式
  • 2025 年度深海网箱优质厂家最新推荐排行榜:大型 / 抗风浪 / 全潜式 / 重力式 / 休闲式 / 圆形 / PE/HDPE/ 挪威式网箱领军企业权威测评发布