setInterval&异步传输
setInterval & AJAX
我有一个简单的聊天工具来更新聊天室:
setInterval (loadLog, 2500);
function loadLog(){
//Scroll height before the request
var oldScrollHeight = document.getElementById("chatMessages").scrollHeight - 20;
$.ajax({
url: "/includes/chat/log.html",
cache: false,
success: function(html){
//Insert chat log into the #chatMessages div
$("#chatMessages").html(html);
var newScrollHeight = document.getElementById("chatMessages").scrollHeight - 20;
if(newScrollHeight > oldScrollHeight){
//Autoscroll to bottom of div
$("#chatMessages").animate({scrollTop: newScrollHeight}, 'normal');
}
},
});
}
大约每2.5秒可靠地执行一次。然而,我想节省带宽,所以…
I更改:
cache: false
至
cache: true
现在,它并不是每2.5秒就可靠地执行一次。(也许每个后续请求的时间都比前一个长?也许不是,它的行为非常奇怪)
我的研究一无所获。请帮忙<3
如果启用缓存,浏览器将缓存上一次对服务器的调用的响应,并且不会进行后续调用。这是意料之中的事,也是cache: true
属性的设计初衷。如果你想减少带宽使用,你可以考虑使用推送技术,而不是定期轮询。这可以使用CCD_ 2来实现。在这种情况下,每当发生更新时,服务器都会向客户端推送通知,而不是客户端每2.5秒轮询一次服务器。显然,这只适用于支持WebSockets的浏览器,因此如果您需要支持传统浏览器,则可能需要在使用它们之前进行功能检测。
相关文章:
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- esri javascript异步打印
- Angular js-返回一个包含类似
- 一点javascript元编程&可链接的设置器
- JavaScript异步问题
- 节点&MySQL:Can't端连接->异步混淆
- 使用JQuery&异步传输
- 无法传输包含异步等待的TypeScript
- 巴别塔&节点:传输后出错((0,_express.express)不是函数)
- 将javascript变量传输到插件函数(异步URL)
- 电话间隙文件传输异步
- 意外的令牌'<'-异步传输
- 如何传输文本,音频&使用Webrtc数据通道从一个对等端到另一个对等点的图像文件
- setInterval&异步传输
- 揭示模块模式&变量范围->异步调用返回后未定义公共对象
- 如何从控制器中多次调用方法?异步传输
- AngularFire&Ionic-没有数据形式传输到服务器
- Mocha&Chai在浏览器中进行异步测试
- 将JSON传输到Javascript&Java与Jackson