当前位置: 首页 > 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.gsyq.cn/news/30245.html

相关文章:

  • CRMEB的PHP版本跨域问题
  • Paper: Learning Affordances at Inference-Time for Vision-Language-Action Models
  • 2025 年热转印花膜优质厂家最新推荐排行榜:聚焦产品质量与客户满意度,涵盖硅胶 / 五金 / 塑胶等多材质应用场景
  • 2025 年国内除湿机厂家最新推荐排行榜:工业 / 家用场景优质品牌精选指南仓库 / 大型 / 车间除湿机公司推荐
  • 第1期(两题)
  • 门店运营成本高企?AI智能解决方案助力降本增效 - 教程
  • 102302155张怡旋数据采集第一次作业
  • 深入解析:Java外功精要(2)——Spring IoCDI
  • 2025年矩形橡胶支座源头厂家权威推荐榜单:GJZ矩形橡胶支座/圆形橡胶桥梁支座/桥梁橡胶支座源头厂家精选
  • 威胁狩猎平台升级:全新认证机制与功能增强
  • 精读C++20设计模式——结构型设计模式:享元模式 - 实践
  • JBoltAI:企业级 Java AI 应用开发框架
  • 实用指南:音视频学习(六十七):音视频像素格式
  • 2025年铁氟龙高温线厂家权威推荐榜:极细铁氟龙/UL10064铁氟龙/UL1332铁氟龙/UL1867铁氟龙/UL10064极细铁氟龙/UL1332极细铁氟龙/UL1867极细铁氟龙专业解析
  • 2025年卫衣品牌权威推荐榜:精选纯棉/加绒/oversize/情侣款卫衣源头厂家,潮流与舒适兼备的穿搭首选
  • 2025年透声膜厂家权威推荐榜:防水透声膜,透气透声膜,手表/耳机/智能手环专用透声膜优质供应商精选
  • 2025年实木家具厂家权威推荐榜:原木/全实木/北美黑胡桃/樱桃木/榫卯工艺高端定制,实木全屋整装,烘干/白胚/木蜡油保养,经典款品质之选
  • 2025年环境试验设备厂家权威推荐榜:冷热冲击/高低温/氙灯耐候/步入式恒温恒湿/HAST老化/机械淋雨试验箱全方位解析
  • 2025年高压加速老化设备厂家推荐排行榜,高压加速老化HAST,高压加速老化PCT,热流仪源头厂家最新权威测评与选购指南
  • CICD流程建设之持续集成实践指南
  • Codeforces Round 1049 (Div. 2)C. Ultimate Value
  • iPhone 上某人发来的短信消失了?9 种解决方法
  • freebsd14.3:安装kde6
  • vue: vue下载项目安装依赖库
  • 如何在1v1一对一视频直播交友APP中实现防录屏防截屏功能?
  • 基于SpringBoot3+Vue3的宠物领养平台、猫狗领养平台、宠物救助管理系统、流浪动物领养管理系统,毕业设计,课程设计
  • 2025 年最新推荐炼铅炉实力厂家排行榜:含废电瓶反射大型环保等设备,权威测评优选企业盘点可移动/熔/设备/无烟/新型炼铅炉厂家盘点
  • Android 网络请求:EasyNet(Okhttp + retrofit + flow + gson + 缓存 + 文件下载 + 文件上传 + 人性化Loading窗)
  • 基于格的抗量子密码
  • Yolo11Onnx——图像后处理