SPA绕坑指南,聊聊你也许会遇到的问题

在进入正题之前,敲下黑板,不同的浏览器对同域限制并发数量是不一样的,这也是为什么大厂都有很多不同的域名去加载资源,
拿chrome浏览器来说
在这里插入图片描述

这张图应该一目了然,同域的资源最多同时请求一定数量(6),知道这个前提,就开始进入正题

SPA作为前端一员应该熟悉不过了,对前后端的分离有着重大意义。
在这里插入图片描述
这里要说的,当你的 pwa 项目中路由过多,每个route下查询的数据也比较多,
当你快速切换route的时候,就有可能出现上述说的问题,会阻塞你的连接。
当然如果你的服务响应很快,从用户获取结果上没有任何问题,
你细细的品,如果一个route 5个接口,我1秒内点击了五个route 其实最终有用的数据是最后一个route 的数据,其他多余请求资源就无形中浪费掉了。

这里要考虑的切换的时候 需要cancel 不必要的接口请求,

这是 axios 的 cancel方式

const axios = require('axios');

const CancelToken = axios.CancelToken;
const source = CancelToken.source();

axios.get('http://localhost:4000/test/ax', {
  cancelToken: source.token
}).catch(function (thrown) {
  if (axios.isCancel(thrown)) {
    console.log('Request canceled', thrown.message);
  } else {
    // handle error
  }
});
 

// cancel the request (the message parameter is optional)


setTimeout(() => {
	source.cancel('Operation canceled by the user.');
}, 4000)

这里要解决的就是要获取页面的 pending 的接口,当切换路由的时候把还在 pending的接口cancel 掉, 话就说到这儿吧,
代码码起来~~, 你又对细节处理更精一步。。。。

如果前端有了 cancel 服务端是不是也要把 线程 或则进程 cancel 掉,以减少性能消耗呢?

可以看 https://blog.csdn.net/ihtml5/article/details/106478880

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值