React、vue、h5端项目避免缓存

前言:

h5项目和pc端项目上线时,有时只有细微的改变,但是部署完后,再次访问却是没变化。必须清除缓存才行。
pc端项目手动清除一下还行,但是h5项目却不行。尤其 嵌套在app里,只能 清除 app的缓存,微信里也是必须 清除app缓存。

比如:微信里:
我>设置>通用>存储空间

比如:h5嵌套在 app里
到设置>应用管理>存储设置>清除缓存(不同手机,步骤不一样,但都大差不差)

pc端就可以去浏览器设置 清除缓存:
不同浏览器有不同的快捷键来清除缓存,请参考以下常见浏览器的情况:

Google Chrome:

Windows / Linux:按下 Ctrl + Shift + Delete

macOS:按下 Command + Shift + Delete

Mozilla Firefox:

Windows / Linux:按下 Ctrl + Shift + Delete

macOS:按下 Command + Shift + Delete

Microsoft Edge:

Windows:按下 Ctrl + Shift + Delete

Safari:

macOS:按下 Command + Option + E
请注意,根据不同的操作系统和浏览器版本,快捷键可能会有所不同。此外,使用快捷键清除缓存时,请确保选择了正确的选项,因为除了缓存之外,还可能清除其他浏览器数据(如Cookies和浏览器历史记录)。
此外,你也可以手动清除缓存。不同浏览器的操作方式略有不同,但通常可以在浏览器设置或选项中找到“清除缓存”或类似的选项。如果你无法找到相应的选项,请尝试搜索浏览器名称和版本号以获得更具体的指导。

解决方案:

vue、react等脚手架、第三方脚手架

react、vue、umi、antd-pro等等,基于vue、react、angluar框架开发的项目,脚手架都可以使用:
打包时输出 静态文件 加上hash值(css、js、img等等)。这个可以在打包配置里 加上,一办都是 output里加。现在很多脚手架都默认支持这个,比如:creatte-react-app、vue-cli等等。
但实际 应用中不一定,起到效果,即使输出的文件带了,hash串(尤其 移动端 )。比如:
打包后的截图
可以看到 文件里确都带了 hash串,但是在微信里依然需要清除缓存或者刷新一下才行。
我在网上搜到的解决方案有给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">

但是加上后 还是有缓存。react、vue里一般都有个模板文件 加到这里面就行。比如react一般是在public/index.html 或者 document.ejs等等。

我的终极解决方案就是:在打包后的index.html里引入 css、js的地方 加上一个 参数,每次打包部署时,都要加。
打包后的index.html

<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8" />
    <link rel="icon" href="/fortunefunddiag/favicon.ico" />
    <meta name="theme-color" content="#000000" />
    <meta name="description" content="" />
    <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">
    <link rel="apple-touch-icon" href="/fortunefunddiag/logo192.png" />
    <title>测试</title>
    <script>/(iPhone|iPad|iPhone OS|Phone|iPod|iOS)/i.test(navigator.userAgent) && (head = document.getElementsByTagName("head"), viewport = document.createElement("meta"), viewport.name = "viewport", viewport.content = "target-densitydpi=device-dpi, width=480px, user-scalable=no", head.length > 0 && head[head.length - 1].appendChild(viewport))</script>
    <script defer="defer" src="/fortunefunddiag/static/js/main.2a2b9676.js"></script>
    <link href="/fortunefunddiag/static/css/main.75b05359.css" rel="stylesheet">
</head>

<body><noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
</body>

</html>

打包后的index.html
需要给 script和 link里引入静态文件的地方加上一个 动态参数。引入css和js的script和link都要加上。在末尾加上?time=xxx 或者? v=1.0.1。时间戳或者版本号都行。

<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8" />
    <link rel="icon" href="/fortunefunddiag/favicon.ico" />
    <meta name="theme-color" content="#000000" />
    <meta name="description" content="" />
    <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">
    <link rel="apple-touch-icon" href="/fortunefunddiag/logo192.png" />
    <title>测试</title>
    <script>/(iPhone|iPad|iPhone OS|Phone|iPod|iOS)/i.test(navigator.userAgent) && (head = document.getElementsByTagName("head"), viewport = document.createElement("meta"), viewport.name = "viewport", viewport.content = "target-densitydpi=device-dpi, width=480px, user-scalable=no", head.length > 0 && head[head.length - 1].appendChild(viewport))</script>
    <script defer="defer" src="/fortunefunddiag/static/js/main.2a2b9676.js?tiem=202401191418"></script>
    <link href="/fortunefunddiag/static/css/main.75b05359.css?tiem=202401191418" rel="stylesheet">
</head>

<body><noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
</body>

</html>

加入参数后
当然 不想手动加也行,但是需要自己在webpack、vite等等 构建工具中 output输出打包文件的地方 写个动态获取 时间戳的方法拼接到最后的路径上也行。
比如webapck 就可以在这里加上:webpack 配置
类似于这样(伪代码):
加上参数后

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库(表的基本操作)

目录 1.1 表的基本操作 1.1.1 创建表 1.1.2 表物理存储结构 1.1.3 数据类型 文本类型&#xff1a; 数字类型&#xff1a; 时间/日期类型&#xff1a; 常用的数据类型&#xff1a; 1.1.4 查看表 SHOW 命令 查看表结构&#xff1a; 1.1.5 删除表 查看表结构&#xf…

TCP服务器的演变过程:C++使用libevent库开发服务器程序

C使用libevent库开发服务器程序 一、引言二、libevent简介三、Libevent库的封装层级3.1、reactor对象封装struct event_base3.2、事件对象struct event3.3、struct bufferevent对象3.4、evconnlistener对象3.5、事件循环3.6、事件处理 四、完整示例代码小结 一、引言 手把手教…

论文精读--ResNet

ResNet论文 撑起计算机视觉半边天的ResNet【论文精读】_哔哩哔哩_bilibili Abstract Deeper neural networks are more difficult to train. We present a residual learning framework to ease the training of networks that are substantially deeper than those used pre…

E/E架构升级是汽车智能化发展关键

E/E架构升级是汽车智能化发展的关键。传统汽车采用的分布式E/E架构因计算能力不足、通讯带宽不足、不便于软件升级等瓶颈&#xff0c;无法满足现阶段汽车发展的需求&#xff0c;E/E架构升级将助力智能汽车实现跨越式革新。汽车E/E架构升级主要体现在硬件架构升级、软件架构升级…

docker:Web迁移

系列文章目录 docker&#xff1a;环境安装 docker:Web迁移 文章目录 系列文章目录前言一、Mariadb1.拉取镜像2.创建容器3.数据同步4.数据分离 二、PHP项目1.拉取镜像2.创建容器3.容器互通 三、Flask项目1.拉取镜像2.创建镜像3.自定义镜像1.安装apache2.安装python33.意外退出 …

【Qt Quick 项目(第一集Qt Quick UI 项目项目创建)】

# Qt Quick 项目 到底什么是Qt Qml、什么是Qt Quick、QtQuick应用程序与Qt Widget程序有何区别,为了让读者在学习QML之前有一个整体认识,这里先介绍几个Quick项目。 01 Qt Quick UI 项目

SCTP, TCP, UDP, IP, ICMP都在哪一层?(TCP/IP网络通信协议学习)

TCP/IP网络通信协议最早是由罗伯特卡恩&#xff08;Robert E. Kahn&#xff09;和文顿瑟夫&#xff08;Vinton G. Cerf&#xff09;于1972年提出的&#xff0c;它是一个实际的协议栈。 OSI七层网络通信协议最早是由国际标准化组织&#xff08;ISO&#xff09;于1977年提出的&am…

在CentOS 7 中配置NFS服务器

目录 1、克隆两个虚拟机 2、安装 NFS 服务 3、NFS 服务使用 1、克隆两个虚拟机 nfs-servernfs-client&#xff08;修改ip地址&#xff09;[rootxnode1 ~]# cd /etc/sysconfig/network-scripts/[rootxnode1 network-scripts]# vi ifcfg-eno16777736 #修改内容如下 BOOTPROT…

2024腾讯云服务器租用价格多少钱一年?1个月和1小时收费明细表

腾讯云服务器租用优惠价格表&#xff1a;轻量应用服务器2核2G3M价格62元一年、2核2G4M价格118元一年&#xff0c;540元三年、2核4G5M带宽218元一年&#xff0c;2核4G5M带宽756元三年、轻量4核8G12M服务器646元15个月&#xff0c;云服务器CVM S5实例2核2G配置280.8元一年、GPU服…

第三篇【传奇开心果系列】Vant开发移动应用:财务管理应用

传奇开心果博文系列 系列博文目录Vant开发移动应用系列博文 博文目录一、项目目标二、编程思路三、初步实现示例代码四、扩展思路五、使用Firebase等后端服务来实现用户认证和数据存储示例代码六、用Vant组件库实现收入和支出分类管理的示例代码七、用Vant组件库实现收入和支出…

【Bugku-web】计算器

1.打开训练场景 2.按"F12"查看页面源代码&#xff0c;根据箭头指向可以看到这个空白框内的长度为1&#xff0c;也就是输完一个字就不能往后输了&#xff0c;根据这样就直接更改数据1改3&#xff0c; 3.改后&#xff1a;多写几个字不碍事&#xff0c;然后计算正确值是…

第04章_IDEA的安装与使用(下)(IDEA断点调试,IDEA常用插件)

文章目录 第04章_IDEA的安装与使用&#xff08;下&#xff09;8. 快捷键的使用8.1 常用快捷键8.2 查看快捷键1、已知快捷键操作名&#xff0c;未知快捷键2、已知快捷键&#xff0c;不知道对应的操作名 8.3 自定义快捷键8.4 使用其它平台快捷键 9. IDEA断点调试(Debug)9.1 为什么…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例4-7 datalist

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>datalist</title> </head><body> <input id"address" list"addressList"> <datalist id"addressList"…

Typora + PicGo + GitHub搭建图床

Typora PicGo GitHub搭建图床 1. Typora下载破解 这一步自行百度 2. PicGo下载 PicGo is Here | PicGo 自行下载安即可 3. GitHub仓库设置 gitHub注册略过&#xff0c;如果不能访问请科学上网 创建仓库 生成访问token 点击右上角头像 -> setting -> 点击左边最…

C语言从入门到入坟

前言 1.初识程序 有穷性 在有限的操作步骤内完成。有穷性是算法的重要特性&#xff0c;任何一个问题的解决不论其采取什么样的算法&#xff0c;其终归是要把问题解决好。如果一种算法的执行时间是无限的&#xff0c;或在期望的时间内没有完成&#xff0c;那么这种算法就是无用…

万界星空科技MES系统的生产管理流程

对于生产型工厂来说&#xff0c;车间生产流程无疑是最重要的管理环节&#xff0c;繁琐的生产细节让企业很难找到合理的生产管理方法&#xff0c;导致人工效率低、错误多、成本高。如果想要解决这些问题&#xff0c;工厂就必须要有一套自己的生产管理系统&#xff0c;这样才能提…

为什么单片机不能直接驱动继电器和电磁阀?

为什么单片机不能直接驱动继电器和电磁阀&#xff1f; 在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&…

HarmonyOS鸿蒙应用开发(三、轻量级配置存储dataPreferences)

在应用开发中存储一些配置是很常见的需求。在android中有SharedPreferences&#xff0c;一个轻量级的存储类&#xff0c;用来保存应用的一些常用配置。在HarmonyOS鸿蒙应用开发中&#xff0c;实现类似功能的也叫首选项&#xff0c;dataPreferences。 相关概念 ohos.data.prefe…

利用AI制作桌游卡牌的个人实践

一、引言&#xff1a; ChatGPT ChatGPT是由OpenAI开发的一款基于GPT&#xff08;生成式预训练变换器&#xff09;架构的人工智能语言模型。GPT-4&#xff0c;是ChatGPT中使用的最新版本&#xff0c;具有以下特点&#xff1a; 1. **语言理解与生成能力**&#xff1a;ChatGPT擅…

Window安装Python和开发Pycharm

准备&#xff1a; 1&#xff1a;安装Python环境 https://www.python.org/downloads/windows/ 2: 下载Pycharm https://www.jetbrains.com/pycharm/download/other.html