SPA前端路由易引发缓存混乱
在React或Vue中使用前端路由的history
模式时,由于服务端会配合使用URL Rewrite
技术,产生的效果就是,SPA页面多个path的请求实际返回的是同一个入口文件。
GET https://idealecho.cn/spa/apath
GET https://idealecho.cn/spa/bpath
Response https://idealecho.cn/spa/index.html
在页面采用强缓存策略的情况下,当服务端文件更新后,用户需要手动刷新页面强行使用协商缓存机制获取最新版本,并更新本地缓存副本。而浏览器对页面进行缓存,使用的key是请求中的path值,这就导致本地会产生多份入口文件的缓存副本,并且版本可能并不一致。
在上例中,浏览器为/spa/apath
和/spa/bpath
两个path分别缓存index.html
文件副本,last-modified
或etag
可能不同。
除非用户对多个path分别手动刷新,否则很容易造成通过链接在多个path间跳转时,页面在新旧版本间变换。
尤其当开发者对某个path做了自动重定向redirect
,让用户很难对原始path手动刷新,也就没法更新对应的缓存。这样即便对其他所有path都进行了刷新,但只要通过前述path进入页面,都会得到页面的旧版本。
解决办法:
第一种,对入口文件index.html
设置Cache-Control: no-cache
以禁用本地缓存;
第二种,服务端保存一个前端最新产出的版本号,页面定时拉取这个版本号与自身版本号对比,发现过期即刷新页面。
独家攻略:传奇私服技能点加速大揭秘,快速升级必备!:https://501h.com/danzhiye/2024-08-20/29220.html
《享受美吧(原声版)》大陆综艺高清在线免费观看:https://www.jgz518.com/xingkong/148969.html
《生死爆破》动作片高清在线免费观看:https://www.jgz518.com/xingkong/95883.html
你的文章让我感受到了无尽的欢乐,谢谢分享。 http://www.55baobei.com/7t0Gc3ILTE.html
你的文章让我心情愉悦,每天都要来看一看。 http://www.55baobei.com/CaeduXanZn.html
真棒!
你的文章让我感受到了无尽的欢乐,谢谢分享。 http://www.55baobei.com/7t0Gc3ILTE.html
你的文章总是能给我带来欢乐,谢谢你! https://www.4006400989.com/qyvideo/78278.html
你的文章让我感受到了生活的美好,谢谢! http://www.55baobei.com/Yg5vvZq0cn.html
你的文章让我心情愉悦,每天都要来看一看。 https://www.4006400989.com/qyvideo/10622.html
真棒!
《甜言蜜语2008国语》香港剧高清在线免费观看:https://www.jgz518.com/xingkong/99172.html
你的文章让我心情愉悦,真是太棒了! https://www.yonboz.com/video/98629.html
《最后的吸血鬼2023》科幻片高清在线免费观看:https://www.jgz518.com/xingkong/46870.html