为何浏览器重复加载base.js?如何避免相同资源重复加载?
问题原因
浏览器的缓存判定逻辑中,请求的Cookie是缓存键的组成部分——即使两个请求的URL完全相同,只要Cookie存在差异,浏览器就会将它们视为两个独立的请求,不会复用已缓存的资源。
你遇到的情况,大概率是两个嵌入的视频在加载base.js时,携带了不同的Cookie(比如一个是匿名上下文、一个带用户登录Cookie,或是视频播放器的加载逻辑自动注入了不同的会话Cookie),导致浏览器认为这是两个不同的资源请求,从而触发了重复加载。
解决方法
- 分离静态资源与Cookie依赖:将
base.js这类无业务Cookie依赖的静态资源,部署到独立的静态资源域名(如static.yourdomain.com),并确保该域名不携带主站的Cookie。同时在静态资源的响应头中设置Cache-Control: public, max-age=31536000, immutable,让浏览器长期缓存该资源。 - 强制请求不携带Cookie:如果无法更换域名,在加载
base.js时,通过fetch请求的话设置credentials: 'omit';如果是通过<script>标签加载,添加crossorigin="anonymous"属性(需确保服务器配置了对应的CORS响应头,允许匿名跨域请求),强制请求不携带Cookie,统一缓存标识。 - 统一视频加载上下文:检查两个视频的嵌入逻辑,确认是否存在播放器SDK自动添加不同Cookie的情况。统一播放器的初始化参数与加载环境,确保
base.js的请求Cookie完全一致,让浏览器可以复用缓存。
内容的提问来源于stack exchange,提问作者HelloWorld
相关产品推荐
相关产品推荐

