前言:博客或者论坛上面,还有自习亲身经历,发现微信小程序的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. linux nginx 部署多套服务(以react包为例)

    前言 今天我特地写下笔记,希望可以完全掌握这个东西,也希望可以帮助到任何想对学习这个东西的同学. 本文用nginx部署服务为主要内容,基于CentOs 7.8系统. 文档版本:1.0.1 更新时间:2 ...

  2. 台账建立和sqlite数据库的数据导入和导入问题

    principle platform command starts with "."; whiel sql command doesn't starts  with ". ...

  3. mongo安装和cmd运行命令

    一.安装方式 安装mongodb :www.mongodb.com next-->complete-->Instal MongoD as Service 不勾选 --> Instal ...

  4. 详解Java的对象创建

    1. 前言 在<还不清楚怎样面向对象?>和<面向对象再探究>两篇文章中,都介绍了关于面向对象程序设计的概念和特点.其中也涉及到了许多代码,比如: Dog dog = new D ...

  5. vue脚手架创建项目名字报错

    vue inti webpack TimeManger 报错 Sorry, name can no longer contain capital letters 原来这个capital是大写的意思,上 ...

  6. 下载数据到csv中(乱码),使用numpy , pandas读取失败 解决方案

    读取数据,下载数据到 csv 文件中 allUniv 列表类型[[...],[...]] 字符集编码使用 utf-8-sig with open('文件名.csv','w',newline='',en ...

  7. Python字典内置函数和方法

    Python字典内置函数和方法: 注:使用了 items.values.keys 返回的是可迭代对象,可以使用 list 转化为列表. len(字典名): 返回键的个数,即字典的长度 # len(字典 ...

  8. html实现a元素href的URL链接自动刷新或新窗口打开

    有时我们想实现这样一个功能,点击一个链接,如果这个链接浏览器已经打开过,则刷新已经打开的链接窗口:如果这个链接没有打开过,则使用新窗口打开这个链接页面. 这是一个非常好的体验增强功能,可以有效避免浏览 ...

  9. C/C++编程笔记:C++入门知识丨运算符重载

    本篇要学习的内容和知识结构概览 运算符重载使用场景 常规赋值操作 我们现在有一个类 想要实现这种赋值操作 具体实现如下: 所以说呢,我们在使用运算符进行运算的时候, 实际上也是通过函数来实现运算的. ...

  10. 2019 7 8 HL 模拟赛

    今天 很不爽 昨天晚上没有睡好觉 大约2点才睡着吧 反正翻来覆去睡不着 不知道为什么可能可行流 或者可行费用流并没有深刻理解 .我不会写 让我心情非常的焦躁. 大凶 顺理成章的被3位强者吊着锤(妈呀我 ...