我每setInterval
使用5 second
来获取我的通知计数器,我认为获取这些结果是个坏主意。因为如果您在我的网站上停留一会儿,就会加载十亿次XHR。
如果使用Facebook,您的XHR也不会很多。
这里是我的网站捕获了XHR:
我在文件中的代码:notification.php
:
function getnotificount(){
$.post('getnotificount.php', function(data) {
$('#notifi_count').html(data);
});
}
setInterval(function(){
getnotificount();
}, 5000);
答案 0 :(得分:3)
您的代码正常。它并没有“加载超过10亿个XHR请求”,它每隔X秒就开始(并完成-如我们所见)一个请求,这没什么问题。
但是,这不是实现推送通知系统的最佳方法。那将是websockets,这是您的客户端“侦听”来自服务器的消息的一种方式。为此有一些框架,最受欢迎的框架(也是我推荐的框架)是socket.io。
您的第三个也是最先进/最现代的解决方案是实现service-worker-based notification system,但是我很确定这太复杂了,不适合您,因为您甚至无法完全理解问题来描述它。 / p>
答案 1 :(得分:0)
您正在做的是轮询,它会定期向服务器发出新请求。对于http请求,将打开TCP连接,交换请求/响应,并关闭TCP连接。这就是您的情况每5秒发生一次。
如果您想要更轻便的解决方案,请查看诸如socket.io之类的websocket。在正面和背面之间仅打开和维护一个TCP连接。这种双向连接使背部能够在发生某些事情时通知前部。
答案 2 :(得分:0)
这不是一个坏主意。这称为轮询,它在许多地方用作从服务器定期获取数据的一种方式。但是,这不是最好的,也不是最现代的解决方案。实际上,如果您的服务器支持WebSockets,则应该使用它们。您不需要使用NodeJS来使用WebSockets,因为WebSocket是在服务器和客户端之间创建双向通讯通道的协议。您应该阅读有关WebSocket的信息。另外,您可以使用推送通知,我认为它不如WebSockets。骇人听闻的方法是使用永久框架。