前言:博客或者论坛上面,还有自习亲身经历,发现微信小程序的webview组件的页面缓存问题相当严重,对开发H5的小童鞋来说应该困扰了不少。很多小童鞋硬是抓破脑袋也没有办法解决这个问题,那我们今天就来探讨下这个问题。

使用实例:

<web-view src="https://www.baidu.com"></web-view>

上面实例就是微信小程序简单的web-view使用展示。

很多童鞋应该都会遇到这样一个问题,为什么我的h5页面已经更新到线上了,但是在微信小程序的web-view里面却展示的是上一个h5版本的内容,有些甚至会出现白屏的情况。

这个主要是基于我们现在前端大环境下,很多都是使用vue或者其他的单页面框架。就拿vue来说,vue默认打包下的路由的模式是hash模式,也就是url默认就带着#号的。所以很可能就会出现这样的情况是这样的

<web-view src="https://www.xxx.com/#/"></web-view>

这时候会有很多手机就会出现当h5的代码更新了v1.1的代码,但是他们的微信小程序的web-view里面展示的还是v1.0的,会很难受,然后就各种贴吧,论坛发文章寻求帮助。但是很多人都会回复说配置url版本号或者再url后面拼接时间戳标识,还有更离谱的会出现建议每次更新h5代码的时间修改项目的文件夹名称,想想是不是有点离谱了。但是按照他们的做法然后拼接版本号或者时间戳啥的,有些网友会回复缓存问题可以解决了啊,但是也有很多人会回复没有用啊。这时候开始疯狂抓狂了。

<web-view src="https://www.xxx.com/#/?v=1.1"></web-view>
<web-view src="https://www.xxx.com/#/a?v=1.1"></web-view>
<web-view src="https://www.xxx.com/#/a/b?v=1.1"></web-view>
<web-view src="https://www.xxx.com/#/a/b?a=b&v=1.1"></web-view>

有可能你们的路径会是上面这样子的了。版本号我也加了啊,为什么没有效呢?正常来说我们比如更新css文件或者js文件在url后面拼接上版本号去区分就可以解决的啊,为什么在这里会不生效啊。

答案:

因为vue的router默认的模式是"hash",就是带#号的这种模式的,但是我们也可以删除#号的,在vue里面配置mode:“history”,也就是h5的histor模式,但是会有些童鞋会出现打包后出现白页面或者文件加载地址不对的问题,会出现各种坑,但是这些坑可能你都可以在论坛或者贴吧找到对应解决的办法的。普片都会说是需要配合nginx等服务器配置的。在这里我可以告诉你,其实可以不修改服务器配置去解决这个问题,vue本身打包的时候就可以解决这个问题的。这个问题在后面的文章里面我会仔细讲解,在这里我就先埋个伏笔好了,就不做过多的详细解释了。在这里我可以告诉你们,很多时候还是需要自己去尝试,自己在本地搭建一台nginx服务器去测试,项目的各种文件嵌套关系,对于打包有没有什么影响。

上面的web-view后面加的版本号是对于web-view的浏览器来说是他并不会重新加载页面的,就算变更了hash后面的版本号,他也只会增加一条历史记录,并不会重新加载页面,所以说,坑就坑在这个位置了,所以这时候我们只要把#号删除就可以解决为啥有些人加了版本号就会出现缓存,有些人不会出现这个问题了。

最后修改完的地址应该就是这样的

<web-view src="https://www.xxx.com?v=1.1"></web-view>
<web-view src="https://www.xxx.com/a?v=1.1"></web-view>
<web-view src="https://www.xxx.com/a/b?v=1.1"></web-view>
<web-view src="https://www.xxx.com/a/b?a=b&v=1.1"></web-view>

这样问题就可以轻松解决了。

 

微信小程序内置组件web-view的缓存问题探讨的更多相关文章

  1. 小程序内置组件swiper,circular(衔接)使用小技巧

    swiper,关于滑块的一些效果无缝,断点,视差等等...我想这里就不用做太多的赘述,这里给大家分享一下实战项目中使用circular(衔接)的一点小特性.小技巧,当然你也可以理解为遇到了一个小坑,因 ...

  2. 微信小程序把玩(八)view组件

    原文:微信小程序把玩(八)view组件 刚看到这个效果的时候还真是和ReactNative的效果一致,属性也基本的一样. view这个组件就是一个视图组件使用起来非常简单. 主要属性: flex-di ...

  3. 原创:WeZRender:微信小程序Canvas增强组件

    WeZRender是一个微信小程序Canvas增强组件,基于HTML5 Canvas类库ZRender. 使用 WXML: <canvas style="width: 375px; h ...

  4. 微信小程序内嵌业务域名内的网页

    微信小程序在2017年11月左右开放了内嵌网页的功能,即新组件<web-view>.官方文档链接:https://mp.weixin.qq.com/debug/wxadoc/dev/com ...

  5. 微信小程序中悬浮窗功能的实现(主要探讨和解决在原生组件上的拖动)

    问题场景 所谓悬浮窗就是图中微信图标的按钮,采用fixed定位,可拖动和点击. 这算是一个比较常见的实现场景了. 为什么要用cover-view做悬浮窗?原生组件出来背锅了~ 最初我做悬浮窗用的不是c ...

  6. 微信小程序之swiper组件高度自适应

    微信小程序之swiper组件高度自适应 要求: (顶部广告栏 ) 改变swiper组件的固定高度,使之随内部每张图片的高度做自适应 原理: 图片加载完之后,获取图片的原始宽高,根据宽高比,计算出适应后 ...

  7. 微信小程序中的组件使用1

    不管是vue还是react中,都在强调组件思想,同样,在微信小程序中也是使用组件思想来实现页面复用的,下面就简单介绍一下微信小程序中的组件思想. 组件定义与使用 要使用组件,首先需要有组件页面和使用组 ...

  8. 微信小程序基于swiper组件的tab切换

    代码地址如下:http://www.demodashi.com/demo/14010.html 一.前期准备工作 软件环境:微信开发者工具 官方下载地址:https://mp.weixin.qq.co ...

  9. 微信小程序内嵌网页能力开放 小程序支持内嵌网页文档说明

    为了方便开发者灵活配置微信小程序,张小龙现在开放了小程序的内嵌网页功能,这是一个非常大的惊喜啊,以后意味着你只要开放一个手机端网站,就可以制作一个小程序了哦.操作方法1.开发者登录微信小程序后台,选择 ...

随机推荐

  1. django-rest-framework-源码解析003-视图家族和路由(APIView/GenericAPIView/mixins/generics/viewsets)

    视图家族 视图家族在rest_framework源码位置和学习曲线为: rest_framework.views: 基本视图(APIView) rest_framework.generics: 工具视 ...

  2. Ghost-无损DDL

    目录 一.什么是DDL? 二.表级锁和元数据锁 2.1.什么是表锁? 2.2.什么是MDL? 三.什么是无损DDL? 四.DDL重建表 Mysql5.5之前重建表 Mysql5.6之后重建表 五.gh ...

  3. Bug--Tomcat Error start child

    添加Quartz之后报错 下面的Cause by: More than one fragment with the name [spring_web] was found. This is not l ...

  4. PHP ftell() 函数

    定义和用法 ftell() 函数返回在打开文件中的当前位置. 返回文件指针的当前位置,如果失败则返回 FALSE. 语法 ftell(file) 参数 描述 file 必需.规定要检查的已打开文件. ...

  5. three.js 着色器材质基础(一)

    说起three.js,着色器材质总是绕不过的话题,今天郭先生就说一说什么是着色器材质.着色器材质是很需要灵感和数学知识的,可以用简短的代码和绘制出十分丰富的图像,可以说着色器材质是脱离three.js ...

  6. 【NOIP2013】火柴排队 题解(贪心+归并排序)

    前言:一道水题. ----------------------- 题目链接 题目大意:给出数列$a_i$和$b_i$,问使$\sum_{i=1}^n (a_i-b_i)^2$最小的最少操作次数. 首先 ...

  7. 【java提高】(19)---BigDecimal详解和精度问题

    BigDecimal详解和精度问题 一.背景 在实际开发中,对于 不需要任何准确计算精度的属性可以直接使用float或double,但是如果需要精确计算结果,则必须使用BigDecimal,例如价格. ...

  8. 你不是说你会Aop吗?

    一大早,小王就急匆匆的跑过来找我,说:周哥,那个记录日志的功能我想请教一下. 因为公司某个项目要跟别的平台做对接,我们这边需要给他们提供一套接口.昨天,我就将记录接口日志的工作安排给了小王. 下面是我 ...

  9. Python稳居编程语言榜首,看完这篇总结,你就明白为什么要学它了

    最近,网上流传一组<人工智能实验教材>的图片,照片火起来的原因是教材是为幼儿园的小朋友们设计的! Python被列入小学.初高中教材已不是新鲜事,现在又成功“入侵”了幼儿园,对此有网友调侃 ...

  10. 团队项目-记账App

    一.团队成员介绍 队长: 向瑜 博客园地址: https://www.cnblogs.com/xiangyu721/  沟通能力较强,善于总结,能够正确分配团队任务.其次,有耐心学习新事物,发现新问题 ...