uniapp h5 微信缓存,解决版本更新还是旧版本

news2025/1/10 17:15:14

文章目录

  • 一、微信缓存是什么?
  • 二、如何解决
    • 1.打包入口文件解决
    • 2.给请求url加时间戳
    • 3.给打包的js文件添加时间戳并修改打包后的css文件夹
  • 总结


一、微信缓存是什么?

微信缓存是指微信客户端为了提高用户的使用体验,会在用户使用微信过程中将一些数据临时存储在本地,以便下次使用时能够更快地加载数据,减少网络请求和响应速度,从而提高应用程序的响应速度和用户体验。这些缓存数据可能包括聊天记录、图片、音频、视频等。但是过多的缓存数据会占用手机存储空间,因此,定期清理微信缓存可以释放空间,保持良好的手机性能。

二、如何解决

1.打包入口文件解决

在这里插入图片描述
找到mainfest.json 中的web配置(h5配置) 中模板路径对应的文件夹与自己根路径下的文件夹名称一致

<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8" />
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<!-- 设置 meta 不缓存 -->
		
		<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
		<meta http-equiv="Pragma" content="no-cache">
		<meta http-equiv="Expires" content="0">

		<script>
			var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
			document.write('<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')

		</script>
		<title>
			xxxxxxx
		</title>
		<link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
	</head>
	<body>
		
		<div id="app"></div>
		
	</body>
</html>

<meta> 中3行代码 
上述代码是在 HTML 的 `<head>` 标签中添加了一些 `<meta>` 标签来设置缓存控制的行为。下面对这些 `<meta>` 标签进行解释:

1. `<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">`:
   - `http-equiv="Cache-Control"` 表示通过 HTTP 响应头来设置缓存控制。
   - `content="no-cache, no-store, must-revalidate"` 指示浏览器不要缓存页面,并且每次请求都要向服务器验证是否有最新版本。这意味着每次用户访问该页面时,浏览器都会发送一个请求到服务器,以确保获取最新的页面内容。

2. `<meta http-equiv="Pragma" content="no-cache">`:
   - `http-equiv="Pragma"` 同样表示通过 HTTP 响应头来设置缓存控制。
   - `content="no-cache"` 指示浏览器不要缓存页面。

3. `<meta http-equiv="Expires" content="0">`:
   - `http-equiv="Expires"` 同样表示通过 HTTP 响应头来设置缓存控制。
   - `content="0"` 表示设置过期时间为0,即告诉浏览器该页面已经过期,不应该被缓存。

通过以上 `<meta>` 标签设置,可以确保浏览器不会缓存页面内容,而是每次访问都从服务器获取最新的页面。这在某些情况下比如网页内容会频繁更新或者需要保持实时数据展示的场景下非常有用。

2.给请求url加时间戳

const BASE_URL = 'http://192.168.0.150:9999'  
export default {
	request(options,time) {
		var timestamp = new Date().getTime();
		  // 将时间戳添加到URL中
		options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + 'timestamp=' + timestamp;
		return new Promise((reslove, reject) => {
			let token = uni.getStorageSync('isLogin')
			let session = uni.getStorageSync('id')
			uni.request({
				url: BASE_URL + options.url,
				method: options.method || 'GET',
				timeout: 15000,
				data: options.data || {},
				
				// withCredentials: true, // 携带当前站点的 cookie 信息
				header: options.header || {
					"X-Token": token,
					'session': session,
					'Cache-Control': 'no-store, no-cache, must-revalidate, max-age=0',
					'Expires': '0'
				},
				
				success: (res) => {
					
					reslove(res.data)
				},
				fail: (err) => {
					
					  console.log(err)
					
					
				},
			})
		})
	}
}


上面代码关键部分 必须要添加
var timestamp = new Date().getTime();
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + 'timestamp=' + timestamp;
// 将时间戳添加到URL中

'Cache-Control': 'no-store, no-cache, must-revalidate, max-age=0',
'Expires': '0'
//设置浏览器请求头不缓存

这样做可以避免浏览器缓存请求结果,确保每次请求都是最新的数据

3.给打包的js文件添加时间戳并修改打包后的css文件夹

uniapp 打包 H5 生成的js文件,默认情况下是不包含版本号以及时间戳后缀。这样会导致H5新版打包上线后,用户依旧使用的是微信中缓存的老版js文件。文件更新滞后等现象

根目录创建 vue.config.js 有的话自己配置,没有自己创建


let filePath = 'static/js/'; // 默认文件路径
let TimeStamp = new Date().getTime(); // 时间戳
let version = '-v1.0.0-'

module.exports = {


	configureWebpack: {
		output: { // filePath: 路径 name: 默认文件名 Version: 版本号 TimeStamp: 时间戳; 重构文件名
			filename: `${filePath}[name].${version}${TimeStamp}.js`,
			chunkFilename: `${filePath}[name].${version}${TimeStamp}.js`
		},
	},
	
	devServer: {}
}
打包完之后查看h5/static.js/js文件夹 
chunk-vendors.-v600-1694394924921.js   都是这种类型 
可以根据需求可控的添加时间和版本号,或者自定义相关后缀

然后在hbuilder中打包
打开打包后的路径
在这里插入图片描述
1.点击static 查看文件
在这里插入图片描述
2.点击 h5下面的index.html
在这里插入图片描述
在这里插入图片描述
更改一下css文件路径,与static下面的css文件路径一致即可

总结

以上方法可以解决h5在微信中的缓存问题,升级时缓存问题倒解决了,但直接导致了用户每次访问你的程序时都要重新请求服务器,所有的静态资源都无法用缓存了,浪费流量,网络压力变大。
我们真正需要解决的问题,不是单纯的要缓存或者不要缓存,而是期望视情况而定:
程序每次升级后,用户都不会因为缓存问题而执行的仍然是老的程序。
若程序没升级,用户对静态资源的请求则能用到缓存。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/999539.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

张量的连续性、contiguous函数

在pytorch中&#xff0c;tensor的实际数据以一维数组&#xff08;storage&#xff09;的形式存储于某个连续的内存中&#xff0c;以“行优先”进行存储。 tensor的连续性 tensor连续&#xff08;contiguous&#xff09;是指tensor的storage元素排列顺序与其按行优先时的元素排…

非科班菜鸡算法学习记录 | 代码随想录算法训练营完结!

这俩月终于结束了233333&#xff0c;之后就是反复复习和背八股了吧&#xff0c;然后整整项目春招再投投投&#xff0c;感觉大部分题都有思路了但是做过的题也会没思路&#xff0c;还是要复习 总结 数组&#xff1a; 双指针用的很多&#xff0c;一般一个指向遍历位置&#xff0…

解决微信开发者工具企业微信小程序模式下模拟器白屏问题

前一天晚上没有关电脑&#xff0c;第二天发现电脑自己重启了&#xff0c;然后微信开发者工具就出了问题&#xff0c;在企业微信小程序模式下&#xff0c;模拟器出现了白屏&#xff0c;只有上方title可以正常显示。点击模拟器右上角三个点都不出弹出菜单&#xff0c;并且在调试器…

VPS使用环境受限?亚马逊云科技Amazon Lightsail为开发者提供更多选择

对于开发者而言&#xff0c;当你想构建系统架构时&#xff0c;你的面前就出现了两种选择&#xff0c;选择一是花时间去亲手挑选每个亚马逊云科技组件&#xff08;云服务器、存储、IP地址等&#xff09;&#xff0c;然后自己组装起来&#xff1b;选择二是只需要一个预先配置且预…

NFTScan | 09.04~09.10 NFT 市场热点汇总

欢迎来到由 NFT 基础设施 NFTScan 出品的 NFT 生态热点事件每周汇总。 周期&#xff1a;2023.09.04~ 2023.09.10 NFT 热点资讯 01/ 数据&#xff1a;Blend 交易总额突破 20 亿美元&#xff0c;较六月底增长一倍 9 月 4 日&#xff0c;据数据显示&#xff0c;Blur 旗下 NFT 借…

Aztec的隐私抽象:在尊重EVM合约开发习惯的情况下实现智能合约隐私

1. 引言 Aztec的架构&#xff0c;不同于当前“通过EVM兼容执行环境”所实现的区块链水平扩容趋势。Aztec内部笑称其构建的为首个非zkEVM协议。 Aztec专注于实现&#xff1a; 成为理解和需要智能合约隐私的开发者的终极解决方案。 Aztec为开发者提供构建隐私优先app所需的网…

问道管理:怎么样才能看懂k线图?

跟着出资者越来越注重股票、期货等出资工具&#xff0c;k线图也被越来越多的人所重视。K线图是通过将商场的开盘价、最高价、最低价以及收盘价等信息绘制在同一张图上&#xff0c;然后协助出资者愈加直观和深入的了解商场状况&#xff0c;并进行出资决策。但关于一些新手来说&a…

618-基于FMC+的XCVU3P高性能 PCIe 载板 设计原理图

基于FMC的XCVU3P高性能 PCIe 载板 一、板卡概述 板卡主控芯片采用Xilinx UltraScale16 nm VU3P芯片&#xff08;XCVU3P-2FFVC1517I&#xff09;。板载 2 组 64bit 的DDR4 SDRAM&#xff0c;支持 IOX16或者 JTAG 口&#xff0c;支持PCIe X 16 ReV3.0以及 FMC 扩展接口。…

数据库数据恢复-Oracle数据库truncate的数据恢复案例

Oracle数据库故障&分析&#xff1a; 北京某单位Oracle 11g R2数据库误执行truncate table CM_CHECK_ITEM_HIS&#xff0c;表数据丢失&#xff0c;查询该表时报错。数据库备份无法使用&#xff0c;表数据无法查询。 Oracle数据库Truncate数据的机理&#xff1a;执行Trunca…

C++零碎记录(九)

15. 继承 15.1 继承简洁 ① 继承是面向对象的三大特性之一。 ② 定义类时&#xff0c;下级别的成员除了拥有上一级的共性&#xff0c;还有自己的特性。这个时候&#xff0c;就可以考虑利用继承技术&#xff0c;减少重复代码。 15.2 普通实现 #include <iostream> usi…

windows启动自动运行应用

运行winR命令输入 shell:startup回车&#xff0c;进入下面文件夹 将所要开机就运行的应用程序放入问价夹中间重新启动就可以了 按 windows键&#xff0c; 搜索startup&#xff0c;可以对所有程序是否需要开机运行进行设置

蓝桥杯打卡Day6

文章目录 N的阶乘基本算术整数查询 一、N的阶乘OI链接 本题思路&#xff1a;本题是关于高精度的模板题。 #pragma GCC optimize(3) #include <bits/stdc.h>constexpr int N1010;std::vector<int> a; std::vector<int> f[N];std::vector<int> mul(in…

集合框架1

目录 一、认识集合 二、Collection接口 三、Iterable接口 四、Queue接口 4.1Queue接口概述 4.2 Deque接口 五、List接口 5.1 使用ArrayList类动态存储数据 5.1.1 ArrayList定义类有两个私有属性 5.1.2 构造方法 5.1.3 操作数据 5.2 使用LinkedList类动态存储数据 …

props验证指的是什么?Vue组件的props验证

props验证指的是在封装组件时对外界传递过来的props 数据进行合法性的校验&#xff0c;从而防止数据不合法的问题。但使用数组类型的props节点有一个缺点&#xff0c;既无法为每个prop指定具体的数据类型。 1.对象类型的props节点 使用对象类型的props 节点&#xff0c;可以对每…

HCIE-HCS规划设计搭建

以实验环境为例&#xff1a;共计6台服务器2288H V5&#xff0c;1台存储 OceanStor 5110 V5&#xff0c;2台万兆48口交换机&#xff0c;1台千兆24口交换机。 Controller&#xff1a;3台控制节点&#xff0c;2颗cpu&#xff0c;每颗cpu24核心/48线程&#xff0c;每台内存1TB&…

Advanced FX Creator v2.6e多种粒子特效与光照资源

这是一个包含动态粒子魔法2和全局照明效果的特效资源,300多个预制件,包括各种先进的效果!!! 下载链接在底部

简单描述下微信小程序的目录结构

微信小程序的目录结构通常包括以下主要部分&#xff1a; 这是一个典型的微信小程序的目录结构&#xff0c;具体项目可能会有一些变化&#xff0c;但通常都包含类似的核心文件和文件夹。小程序开发者需要按照这个结构组织项目代码和资源 app.js&#xff1a;小程序的主入口文件&a…

keep-alive缓存三级及三级以上路由

需求需要缓存这个出入记录&#xff0c;当tab切换时不重新加载&#xff0c;当刷新页面时&#xff0c;或把这个关闭在重新打开时重新加载如图&#xff1a; &#xff08;我这里用的是芋道源码的前端框架) keep-alive 1、include 包含页面组件name的这些组件页面&#xff0c;会被…

数字化时代,企业风险管理能力策略探析

“提质增效”已经成为了当前所有企业面临的共同话题&#xff0c;而在“提质增效”的过程中&#xff0c;提升自身的风险管理能力是其中非常关键的一项内容&#xff0c;因此&#xff0c;对提高企业风险管理能力的策略进行分析有着较为重要的意义。 一、当前企业风险管理存在的相…

2023 CCF国际AIOps挑战赛,报名倒计时!|截止时间9月15日

智能运维领域最具影响力的专业赛事——2023 CCF国际AIOps挑战赛&#xff0c;自报名启动以来已收到230余支队伍报名&#xff0c;约600余位选手参与本次挑战赛。本次大赛的报名截止时间为9月15日&#xff0c;目前报名已经进入倒计时&#xff0c;请选手们抓紧最后时间报名参赛&…