最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 关于小程序开发:让人咬牙切齿的WebView缓存问题

    正文概述 掘金(VastCha)   2021-01-15   1351

    背景:

    最近接到一个项目需求,给一套小程序内嵌的H5页面更换主题样式,开发过程虽然比较坎坷但也顺利完成需求开发。 (相关方案链接:juejin.cn/post/691482… by:努力的Jerry)

    但是,相关质量工程师在提测时发现,有一部分H5的css样式没有发生变化,显示的仍是原始的样式。仔细检查代 码发现并无问题。经过一段时间的排查,发现大多数测试机样式显示正常 ,只有个别安卓手机出现异常。

    解决过程:

    在出现问题的测试机上,大部分H5页面样式没有问题,只有少数页面未能更新css样式,并且所有的H5页面html显示正常。由此可以排除手机的兼容性问题。

    代码没问题,兼容性没问题,那么只有可能是缓存的问题了。

    一般情况,微信小程序的缓存只需要在列表删除小程序重新打开就能清除了,但由于我们用的是WebView内嵌的H5页面,缓存没有存在小程序中,所以这种办法不能生效。重新登陆微信依旧没有效果。最后卸载微信,重新下载---登录---打开小程序,发现H5页面终于显示正常。喜大普奔!

    当然这种方式只能当作一种应急措施,要想从根本解决问题还得从代码入手。

    小程序内核浏览器

    据了解

    • iOS 端:小程序的 javascript 代码是运行在 JavaScriptCore 中,是由 WKWebView 来渲染的,环境有 iOS8、iOS9、iOS10。

    • Android 端:小程序的 javascript 代码是通过 X5 JSCore来解析,是由X5基于 Mobile Chrome 37 内核来渲染的

    • 开发工具: 小程序的 javascript 代码是运行在 nwjs 中,是由 Chrome Webview 来渲染的。

    想知道程序运行时使用的是哪个浏览器,可以访问本地址

    www.ip33.com/browser.htm…

    现在可以得知,提测过程中出现样式问题的测试机使用的是X5内核浏览器,X5对Html5与ES6完全支持,所以不用担心会出现兼容性的问题。那么现在的问题就是如何清除缓存或者避免产生缓存

    HTTP缓存机制

    首先要大致地了解一下http的缓存机制,Web 缓存大致可以分为:数据库缓存、服务器端缓存(代理服务器缓存、CDN 缓存)、浏览器缓存。 浏览器缓存也包含很多内容: HTTP 缓存、indexDB、cookie、localstorage 等等。这里我们只讨论 HTTP 缓存相关内容。

    关于小程序开发:让人咬牙切齿的WebView缓存问题

    如图红线所示的过程代表强缓存。用户发起了一个http请求后,浏览器发现先本地已有所请求资源的缓存,便开始检查缓存是否过期。 每个浏览器的缓存周期不同,要等缓存过期还不知道得等多久。逛了逛微信开放社区,官方对清除webview缓存好像还没有真正有效的解决方案,只能通过本地手段强制清除缓存(重新安装微信或者重新登陆,后者不一定有用),体验较差。

    避免产生缓存

    现在最好的办法还是去避免产生缓存,浏览器缓存是基于url进行缓存的,如果页面允许缓存,则在一定时间内(缓存时效时间前)再次访问相同的URL,浏览器就不会再次发送请求到服务器端,而是直接从缓存中获取指定资源。如果我们每次访问不同的url,那么也就不会产生缓存。

    为了让webview跳转到不同的url,我们只需要在URL后面添加一些特殊字段实现差异化,这些字段可以是小程序的版本号也可以是一段时间戳。

    获取时间戳的方式

    const timeStamp =Date.parse(new Date()); 
    

    如果你有更好的解决方案,请与我联系,第一次在掘金发表文章还请大家多多指点。

    本人博客vastcha.cn/


    起源地下载网 » 关于小程序开发:让人咬牙切齿的WebView缓存问题

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元