uniapp打包H5的时候 清楚缓存(不安装依赖的前提下)

news2025/1/9 5:52:16

问题

在写项目的时候,打包好一个H5 发布成功,后来又重新打包新的包进行更新迭代,但是用户手机上还是上一个版本,本地缓存还是没有清除。

解决问题

步骤一:html不缓存

在html中,解决缓存的方法主要是依赖以下标签的属性:

<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" />

这几个标签是什么意思呢:

这几个标签的作用是禁用浏览器缓存,确保每次访问页面时都从服务器加载最新的内容。具体解释如下:

(1<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />:
		这个标签设置了HTTP响应头中的Cache-Control属性,告诉浏览器不要缓存页面的任何部分,包括图片、脚本等。同时,要求浏览器在每次请求时都必须向服务器验证资源的新鲜度。
(2<meta http-equiv="Pragma" content="no-cache" />:
		这个标签设置了HTTP响应头中的Pragma属性,它与Cache-Control类似,但主要用于HTTP/1.0协议。同样表示不缓存页面的任何部分。
(3<meta http-equiv="Expires" content="0" />:
		这个标签设置了HTTP响应头中的Expires属性,它指定了页面的过期时间。设置为0表示页面立即过期,即每次都需要重新从服务器获取。

综合这三个标签,可以确保浏览器不会缓存页面的任何内容,从而确保用户总是看到最新的页面内容。

所以要保证打包时候生成的html具备这几个标签,就能保证用户每次请求的都是服务器是上最新版本的html文件
uniapp官方提供了一个东西叫做:index.html模板
就在manifest.json =>> web配置 =>> index.html模板路径:
在这里插入图片描述
在manifest.json同级目录下创建一个名为 :template.h5.html 的文件
文件内容如下所示:

<!DOCTYPE html>
<html lang="zh-CN">
    <head>
        <!-- 由于自定义了meta标签想要实现自动化打包添加该标签,需要添加自定义html模板 -->
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <!-- 这个标签设置了HTTP响应头中的Cache-Control属性,告诉浏览器不要缓存页面的任何部分,包括图片、脚本等。同时,要求浏览器在每次请求时都必须向服务器验证资源的新鲜度。 -->
        <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
		<!-- 这个标签设置了HTTP响应头中的Pragma属性,它与Cache-Control类似,但主要用于HTTP/1.0协议。同样表示不缓存页面的任何部分。 -->
        <meta http-equiv="Pragma" content="no-cache" />
		<!-- 这个标签设置了HTTP响应头中的Expires属性,它指定了页面的过期时间。设置为0表示页面立即过期,即每次都需要重新从服务器获取。 -->
        <meta http-equiv="Expires" content="0" />
        <title>
            <%= htmlWebpackPlugin.options.title %>
        </title>
        <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>
        <link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
    </head>
    <body>
        <!-- <noscript>
            <strong>Please enable JavaScript to continue.</strong>
        </noscript> -->
        <div id="app"></div>
        <!-- built files will be auto injected -->
    </body>
</html>

打包以后的index.html文件如下所示:已经包含了刚刚说的三行代码在这里插入图片描述

步骤二:js不缓存

步骤一是解决了html不缓存的问题,但是解决不了js缓存的问题,就需要使用vue的打包机制来解决问题了。

vue.config.js文件是Vue项目的配置文件,用于自定义项目的配置选项。在这个文件中,你可以设置各种与构建、开发和部署相关的配置项,例如:

(1)修改webpack配置:可以对webpack进行个性化配置,如修改入口文件、输出目录、插件等。
	(2)开发服务器配置:可以配置开发服务器的端口号、代理设置等。
	(3)生产环境优化:可以开启代码压缩、分割等优化选项。
	(4)单元测试配置:可以配置单元测试工具(如Jest)的相关选项。
	(5)集成第三方库或插件:可以添加一些第三方库或插件的配置信息。
总之,vue.config.js文件可以让你更灵活地控制Vue项目的构建和运行过程。

所以,再项目的根目录下面创建一个vue.config.js文件:具体代码如下:

let filePath = '';   // 默认文件路径
let TimeStamp = '';  // 时间戳
let Version = '-V1.0.0-'; // 版本号
//编译环境判断,可以根据不同环境来做相应的配置
if (process.env.UNI_PLATFORM === 'h5') {
  filePath = 'static/js/'
  TimeStamp = new Date().getTime();
  process.env.VUE_APP_INDEX_CSS_HASH=`${Version}${TimeStamp}`   //给css文件也使用该时间戳
}
 
module.exports = {
  configureWebpack: {
    output: { //重构文件名
      filename: `${filePath}[name].${Version}${TimeStamp}.js`, // index文件重命名为带有版本号+时间戳的格式
      chunkFilename: `${filePath}[name].${Version}${TimeStamp}.js` // static/js/pages-home-index.-V1-754654657.js  
    },
  },
}

这样配置保证每次打包后的js文件名和之前的文件名字都不一样,此时找不到文件名就会到服务器请求最新的文件,即可每次不会使用缓存文件

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

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

相关文章

文章解读与仿真程序复现思路——电力自动化设EI\CSCD\北大核心《海上风电全直流汇集送出系统自适应振荡抑制策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

【小bug】springMVC通过json传参无法解析参数

0.问题描述 通过postman测试使用json传参的时候&#xff0c;发现不论怎么修改&#xff0c;都无法获取参数&#xff0c;解析对象。 反复检查请求url&#xff0c;请求内容均为正常。 以下是postman测试结果&#xff1a; 日志提示无法解析参数&#xff0c;内容如下&#xff1a;…

C# VideoCapture 多路视频播放

目录 效果 项目 代码 下载 效果 C#VideoCapture多路视频播放 项目 代码 using OpenCvSharp; using System; using System.Collections.Concurrent; using System.Collections.Generic; using System.Diagnostics; using System.Threading; using System.Threading.Tasks…

MS5046T/5047T/5048T/5048N_2kSPS、16bit Σ-Δ ADC

MS5046T/MS5047T/MS5048T/MS5048N 是适合高精 度、低成本测量应用的 16bit 模数转换器。其内部集成低 噪声可编程增益放大器、高精度 Δ-Σ 模数转换器和内部振 荡器。 MS5047T 、 MS5048T 、 MS5048N 内部还集成低温 漂基准和两路匹配的可编程电流源。 MS5048T/MS50…

计算机毕业设计 健身房管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

springboot考勤管理系统代码调试讲解论文

2 相关技术 2.1 MySQL数据库 该研究和开发的应用程序在数据操作中难以预料&#xff0c;有时候甚至发生改变。没办法直接从Word中写数据和信息&#xff0c;这不但不安全的&#xff0c;并且难以实现应用程序的功效。要实现所需要的文档存储作用&#xff0c;请尽快选择专业数据存…

【JPCS独立出版,EI稳定检索】2024年工业机器人与先进制造技术国际学术会议(IRAMT 2024,9月27-29)

2024年工业机器人与先进制造技术国际学术会议&#xff08;IRAMT 2024&#xff09;将于2024年9月27-29日在中国成都举办。 此次会议将围绕工业机器人、机电技术、机械及制造等领域的最新研究成果展开讨论&#xff0c;并广泛邀请了国内外领域内的著名专家与学者。会议旨在搭建一个…

Vision Transformer学习笔记

论文链接&#xff1a;https://arxiv.org/abs/2010.11929 项目链接&#xff1a;https://github.com/google-research/vision_transformer 本文代码链接&#xff1a;https://gitcode.com/gh_mirrors/de/deep-learning-for-image-processing/tree/master/pytorch_classification/v…

MS2350M/MS2350D——RF 检测器/控制器

MS2350M/MS2350D 是一款对数放大器芯片&#xff0c;相比 MS2351M/MS2351D &#xff0c;它的应用频率范围的下限可低至 4MHz 。主要用于接收信号强度指示 (RSSI) 与功率放大器 控制&#xff0c;工作频率范围是 4MHz  3000MHz &#xff0c;动态范围约 40dB 。 MS2350M/M…

【Qt】QWidget的windowIcon属性

QWidget的windowIcon属性 windowIcon表示窗口的图标 当我们使用默认的windowIcon的时候&#xff0c;其窗口的图标如下&#xff1a; API说明 windowIcon() 获取到控件的窗⼝图标. 返回 QIcon 对象. setWindowIcon(const QIcon& icon) 设置控件的窗⼝图标. 在Qt中&…

CTFHUB-SQL注入-过滤空格

目录 查询数据库名 查询数据库中的表 查询表中字段 查询表中数据 空格被过滤&#xff0c;使用 /**/ 绕过 查询数据库名 -1/**/union/**/select/**/1,database() 查询数据库中的表 -1/**/union/**/select/**/1,group_concat(table_name)/**/from/**/information_schema.t…

多分类实战:一文掌握 One-vs-All 策略

引言 在机器学习领域&#xff0c;分类问题是常见的任务之一。当我们面对的问题不仅限于两类分类&#xff08;如正例和反例&#xff09;&#xff0c;而是需要处理多个类别时&#xff0c;就会遇到多类分类问题。例如&#xff0c;在手写数字识别中&#xff0c;我们需要将输入图像…

Linux 之 shell指令个人解析

1.echo 类似printf 都是在屏幕上显示字符 2.$ 可以在引用变量时使用 3.read 可以读取你输入的字符&#xff0c;有八个属性 -p可以让读取的东西赋值为变量 4.加减乘除等算法的应用 要用到$(( 算式 )) 注&#xff1a;total等于号不能空开&#xff0c;一空开就错误 5.te…

Java读写EM4305卡、将4305卡制做成4100ID卡

EM4305/EM4205卡是采用瑞士EM微电子公司工作频率为125kHz&#xff0c;具有读、写功能的非接触式RFID射频芯片&#xff0c;它具有功耗低、可提供多种数据传输速率和数据编码方法等特点&#xff0c;适合射频芯片ISO 11784/11785规范&#xff0c;该芯片被广泛应用于动物识别和跟踪…

传智教育引通义灵码进课堂,为技术人才教育学习提效

7 月 17 日&#xff0c;阿里云与传智教育在阿里巴巴云谷园区签署合作协议&#xff0c;双方将基于阿里云智能编程助手通义灵码在课程共建、品牌合作及产教融合等多个领域展开合作&#xff0c;共同推进 AI 教育及相关业务的发展&#xff0c;致力于培养适应未来社会需求的高素质技…

PyTorch之loading fbgemm.dll异常的解决办法

前言 PyTorch是一个深度学习框架&#xff0c;当我们在本地调试大模型时&#xff0c;可能会选用并安装它&#xff0c;目前已更新至2.4版本。 一、安装必备 1. window 学习或开发阶段&#xff0c;我们通常在window环境下进行&#xff0c;因此需满足以下条件&#xff1a; Windo…

tkinter绘制组件(43)——对话框

tkinter绘制组件&#xff08;43&#xff09;——对话框 引言布局窗口初始化对话框类型弹窗显示和窗口冻结内容返回信息提示输入对话框 函数封装 效果测试代码最终效果 github项目pip下载结语 引言 严格来说&#xff0c;对话框是控件的组合&#xff0c;不是一个控件&#xff0c…

AI菜鸟向前飞 — OpenAI Assistant API 原理以及核心结构(二)

AI菜鸟向前飞 — OpenAI Assistant API 原理以及核心结构&#xff08;一&#xff09; 使用Assistant API 如何去实现一个自定义“Tool” 依然是三步走&#xff0c;是不是很像&#xff1f;与LangChain定义的方式基本一致&#xff0c;请回看 AI菜鸟向前飞 — LangChain系列之十三…

详细分析SQL Server触发器的基本知识

目录 前言1. 基本知识2. Demo3. 查找特定表的存储过程 前言 原先写过一篇类似的&#xff0c;不过是基于Mysql&#xff1a;添加链接描述 对应Sql Server的补充知识点&#xff1a;详细配置SQL Server的链接服务器&#xff08;图文操作Mysql数据库&#xff09; 1. 基本知识 基…

JVM虚拟机(一)介绍、JVM内存模型、JAVA内存模型,堆区、虚拟机栈、本地方法栈、方法区、常量池

目录 学习JVM有什么用、为什么要学JVM&#xff1f; JVM是什么呢&#xff1f; 优点一&#xff1a;一次编写&#xff0c;到处运行。&#xff08;Write Once, Run Anywhere&#xff0c;WORA&#xff09; 优点二&#xff1a;自动内存管理&#xff0c;垃圾回收机制。 优点三&am…