如何避免过于频繁的前端轮询给服务器带来的压力
既然是微信,最好做socket连接,但是需要改造你的服务器,这样前端更省心,服务器可以推送。
第二种方案是参考彗星模式。发送ajax请求后,如果服务器没有新消息,不要返回,保持连接,直到有数据。
前端应该做三件事:
第一件事是因为http是短连接,一般浏览器会设置超时,所以如果前端连接超过一定时间没有返回,需要中止重启,建议30秒;
第二件事是服务器每次返回数据,这个请求就结束了,你需要发起新的请求进行监控;
第三件事是多页请求的冲突,比较麻烦。不过如果你是小游戏的话,应该是单页应用,不用处理。通常,多页面应用程序或网站通过本地存储来共享信息,以避免重新发送请求。您也可以关闭以前的请求,并在当前页面上重新启动请求。
无论哪种方案,服务器端都需要改造,这不仅仅是前端自己的事情,因为如果每个连接都用一个线程打开,很快就会出现内存不足挂掉的情况。