前两天上线了一个小功能,差点把我们项目搞崩溃

项目场景:

最近一直在迭代公司的系统,业务提出需要增加一个消息通知的功能,对接完需求之后,我们就
开始热火朝天的编码、测试、上线,
在这里插入图片描述
就是右上角这个小图标,为了提升用户体验,我们采用每隔20S定时查询一次后端消息接口,为了让用户几十获取最新的消息,这种操作俗称“轮询请求”, 但是问题就出在这个“轮询”上,相信看到这里很多同学已经猜到我们遇到的问题,


问题描述

很多用户进入系统之后,哪怕不做操作,或者是不关闭网页,有不关电脑,我们的“轮询”就一直再跑,导致后端接口一直被调用,如果用户量庞大,很可能造成服务器宕机


解决方案:

1.最简单的方案:调整时间间隔,延长时间间隔,改为 60s ,90s 等
2.页面活跃状态监控:通过 visibilitychange 事件 监控页面活跃度,以及通过判断用户是否在当前窗口
3.通过 sse 或者 WebSocket 后端主动推流的方式,实现该功能(成本过高)

后续思考

经历了这次事件,我们深刻意识到技术选型与优化策略的重要性,在进入开发之前我们需要充分的考虑场景,有一定前瞻性。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值