关于从大平台跳转各个应用,更新应用前端包后,显示的仍是旧的内容,刷新应用页面后方才显示新的内容的问题的排查和解决

本文主要是介绍关于从大平台跳转各个应用,更新应用前端包后,显示的仍是旧的内容,刷新应用页面后方才显示新的内容的问题的排查和解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

我们从绿洲物联平台跳转智能锁应用,
在这里插入图片描述
如下,我们可以看到,我们是通过a标签去跳转应用的。但是我们打开控制台的话,因为a标签是另外新开一个页面,我们看不到新页面的html文档的加载情况。
在这里插入图片描述
我们可以临时把_blank改成_self,在当前页面打开应用,我们就可以在控制台看到加载的情况了。
在这里插入图片描述
我们看到我们的智能锁应用的html文档的加载,居然使用了强缓存。
从响应头的last-modified的时间,我们可以看出来智能锁应用的文件用的是什么时候更新的文件。
从response响应的内容里加载的js来看,我们可以看出来我们通过强缓存使用的这个html文件里,引用的是哪个hash的js文件。

在这里插入图片描述
在这里插入图片描述
如下图,因为刷新应用页面后,html用的是协商缓存,那么协商缓存是不会有问题的。就正确加载了最新的前端包文件html(这里的示例,
强缓存和协商缓存返回的都是同一个html,示例不太好哈,我们应该更新一个智能锁前端包,就会发现两个html是不同的,协商缓存永远是返回最新的,强缓存因为是根据max-age来做的缓存,所以不到文件过期,永远是用旧文件的。
在这里插入图片描述

为什么从平台跳转应用,用的强缓存,但是通过url处回车刷新应用页面,却用的是协商缓存呢?因为两者的刷新策略是不同的。
注意缓存的优先级:强缓存>协商缓存

刷新策略:
强缓存:在浏览器强制刷新(如F5刷新或Ctrl+F5强制刷新或通过url处回车刷新)的情况下,强缓存不会生效,浏览器会重新向服务器发送请求。

协商缓存:在浏览器强制刷新的情况下,协商缓存仍然会生效。浏览器会发送请求并带上缓存标识,服务器会根据这些标识来判断是否返回新的资源。

总结

nginx代理配置智能锁应用的html的缓存配置的时候,配置了强缓存和协商缓存,那么通过a标签跳转智能锁应用的时候,
强缓存优先级高,强缓存生效,导致显示的旧的前端包内容;刷新智能锁应用页面的时候,强缓存失效,协商缓存生效,那么这个时候加载的前端包内容就是最新的前端包内容了。
所以我们要注意,html的缓存配置是不可以用强缓存的,只能用协商缓存或者no-store不缓存。

这篇关于关于从大平台跳转各个应用,更新应用前端包后,显示的仍是旧的内容,刷新应用页面后方才显示新的内容的问题的排查和解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071382

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

2024.6.24 IDEA中文乱码问题(服务器 控制台 TOMcat)实测已解决

1.问题产生原因: 1.文件编码不一致:如果文件的编码方式与IDEA设置的编码方式不一致,就会产生乱码。确保文件和IDEA使用相同的编码,通常是UTF-8。2.IDEA设置问题:检查IDEA的全局编码设置和项目编码设置是否正确。3.终端或控制台编码问题:如果你在终端或控制台看到乱码,可能是终端的编码设置问题。确保终端使用的是支持你的文件的编码方式。 2.解决方案: 1.File -> S

JAVA读取MongoDB中的二进制图片并显示在页面上

1:Jsp页面: <td><img src="${ctx}/mongoImg/show"></td> 2:xml配置: <?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001

vue, 左右布局宽,可拖动改变

1:建立一个draggableMixin.js  混入的方式使用 2:代码如下draggableMixin.js  export default {data() {return {leftWidth: 330,isDragging: false,startX: 0,startWidth: 0,};},methods: {startDragging(e) {this.isDragging = tr

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6

问题-windows-VPN不正确关闭导致网页打不开

为什么会发生这类事情呢? 主要原因是关机之前vpn没有关掉导致的。 至于为什么没关掉vpn会导致网页打不开,我猜测是因为vpn建立的链接没被更改。 正确关掉vpn的时候,会把ip链接断掉,如果你不正确关掉,ip链接没有断掉,此时你vpn又是没启动的,没有域名解析,所以就打不开网站。 你可以在打不开网页的时候,把vpn打开,你会发现网络又可以登录了。 方法一 注意:方法一虽然方便,但是可能会有

JavaScript全屏,监听页面是否全屏

在JavaScript中,直接监听浏览器是否进入全屏模式并不直接支持,因为全屏API主要是关于请求和退出全屏模式的,而没有直接的监听器可以告知页面何时进入或退出全屏模式。但是,你可以通过在你的代码中跟踪全屏状态的改变来模拟这个功能。 以下是一个基本的示例,展示了如何使用全屏API来请求全屏模式,并在请求成功或失败时更新一个状态变量: javascriptlet isInFullscreen =

ABAP怎么把传入的参数刷新到内表里面呢?

1.在执行相关的功能操作之前,优先执行这一段代码,把输入的数据更新入内表里面 DATA: lo_guid TYPE REF TO cl_gui_alv_grid.CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'IMPORTINGe_grid = lo_guid.CALL METHOD lo_guid->check_changed_data.CALL M

据阿谱尔APO Research调研显示,2023年全球髓内钉市场销售额约为4.7亿美元

根据阿谱尔 (APO Research)的统计及预测,2023年全球髓内钉市场销售额约为4.7亿美元,预计在2024-2030年预测期内将以超过3.82%的CAGR(年复合增长率)增长。 髓内钉市场是指涉及髓内钉制造、分销和销售的行业。髓内钉是一种用于整形外科手术的医疗器械,用于稳定长骨骨折,特别是股骨、胫骨和肱骨。髓内钉通常由不銹钢或钛等材料制成,并插入骨的髓管中,以在愈合过程中提供结构支