Ajax 请求太频繁

服务器做了两个优化 CPU 使用率减低 40%

解决方案

核心思路是不论浏览器打开了多少窗口,浏览器内的所有窗口在单位时间内(15 秒),只能发送一个请求。怎么做到呢?利用现代浏览器内置的 localStorage 功能可以很容易实现:

  1. JS 端使用 localStorage 在请求成功后记录 notification_requested_at 的值为Date.now()
  2. 在每一次请求发送前,拿当前时间 Date.now() 减去 notification_requested_at 时间;
  3. 如果大于 15 秒,就发送请求;
  4. 否则放弃请求,直接读取 localStorage 里的 notification_count
  5. 请求成功后将获取到未读消息数存入 localStorage 键为 notification_count ;
  6. 每次刷新页面,JS 初始化时未读消息数存入 localStorage 键为 notification_count 。

有同学在问为啥不使用长链接,首先这里要求的实时性不需要那么高,其次,我有意保持程序架构的简单,Keep it simple and stupid ,越简单越方便维护,够用就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值