解决webview缓存问题

2024-06-04 3252阅读

最近在开发小程序,因为一些需求在小程序内实现不了,转向引入webview来解决,说实话,坑很多,后面再一一梳理遇到的问题,今天先记录一下webview遇到的缓存问题

webview

先说下自己的理解吧,webview是独立于微信客户端之外的,是为了解决小程序或者APP解决不了的问题,比如小程序不能操作dom元素,需求里面需要大量的操作dom元素,就可以引入webview,但是相对地,就会有缓存和兼容的问题,先说一下缓存的问题

借鉴了两位大佬的解决方案 跳转1跳转2,好奇的可以先看着两篇文章

先讲一下缓存的问题,每次小程序加载webview的url的时候,url是每次加载都不变的情况下,访问的资源大多数是走的缓存,webview本质是浏览器,浏览器默认是带缓存的,排除一些设置的情况下,后续每次访问页面,一些资源请求或者Index.html文件的请求,都是走的缓存,查看接口也是服务器返回了304(304代表优先走本地缓存)

看下图,能够看到确实走的客户端内的缓存,第一次加载客户端就已经缓存的页面文件

解决webview缓存问题 第1张

单页面应用的缓存方向主要是两个(主要也是上图中两种缓存)

  • 入口index.html的缓存
  • 打包后的资源文件的缓存

    之前所了解到的解决缓存的方法

    • index.html的head部分添加meta标签

      http-equiv=“Cache-control”

      content=“no-store,no-cache”

      />

      • 这两种方式都试过,都不太行,页面还是有缓存,后面看到一个大佬的文章,感觉好像很可行的样子,就试了一下,果然可以

        最终解决方案

        先总体说下解决方案

        • 解决入口文件index.html缓存(服务器响应增加请求头Cache-Control,本项目采用Nginx部署,就直接在Nginx配置文件添加了–add_header Cache-Control “no-store, no-cache”

          这样每次加载项目地时候都会不走缓存)

        • 解决资源缓存问题(资源加载主要是webpack打包后端 dist文件,这里调整项目配置文件,增加hash:true属性,给每次打包后的文件添加hash标识符)

          add_header Cache-Control "no-store, no-cache"的解释

          解决webview缓存问题 第2张

          关于清除资源文件的缓存

          解决webview缓存问题 第3张

          打包后的js文件

          解决webview缓存问题 第4张

          根据上面的调整试了一下,确实没有走缓存

          调整之前

          解决webview缓存问题 第5张

          调整之后 (服务器返回都是200,不是304或者来自磁盘缓存了)

          解决webview缓存问题 第6张

          解决webview缓存问题 第7张

          大概就是这些,我这里是记录了最简单快速的解决方式,有不同意见的可以提出来哦


    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]