跨域请求减少一半请求

[原创]个人理解,请批判接受,有误请指正。转载请注明出处: https://heyfl.gitee.io/web/Reduce-half-of-the-cross-domain-requests.html

简述

点很小,作用挺大,简单写写
客服系统重构后,前端对应的后端服务域名不在同一个(这里没有用nginx解决跨域问题),每次请求都会发送两次请求,一次是预检请求,一次是正式请求。
这样就会导致请求的次数增加一倍,这样就会影响到用户的体验,尤其是对网络不好、国外的用户访问体验带来沉重的打机,新版客服系统上线后叫苦连连。

解决方案

这个问题困扰了好些日子,前些天突然查到一个配置可以很很简单快捷的解决这个问题,这个配置是Access-Control-Max-Age

原理:

后端返回的Access-Control-Max-Age 大于浏览器支持的最大值 那么取浏览器最大值作为缓存时间
否则取后端返回的Access-Control-Max-Age作为缓存时间
缓存时间内不会再发option请求
点这源码

配置

后端对CorsConfiguration配置Access-Control-Max-Age,前端请求时接收到Access-Control-Max-Age,在该有效时间内不会再发出Option请求
CorsConfiguration config = new CorsConfiguration();
config.setMaxAge(3600L);

我们粗暴地设置了1个小时,一个小时内,相同URL请求不需要再发两个同步请求,减少了一半请求量,大幅提高了用户体验

吐槽

其实我一直吐槽用nginx反向代理解决跨域问题就好了,但是架构已定,大动还得经过领导层层审批,且基本不可能通过,所以在跨域问题上花费大量时间。。。

作者

神奇宝贝大师

发布于

2022-08-10

更新于

2022-09-20

许可协议

评论