我正在开发一个需要经常使用ajax发布到服务器的应用,这会降低性能。作为一种解决方法,我开始测试localStorage作为替代方案。结果不太理想,经常检索/设置localStorage非常慢(我很惊讶地发现),并且杀死了性能。
另一方面,每次触发事件时我都不想发布到服务器,因为这与localStorage具有几乎相同的性能。
我想知道其他解决方案是什么?
我可以创建一个在触发事件时不断更新的“数据”对象吗?使用超时功能后退到后期?如果是这样你会怎么设置它?
有哪些选项可以存储可以快速检索的事件的数据?如果有人能指出我正确的方向,我会非常感激。
答案 0 :(得分:0)
简单的解决方案是收集您希望保存在数组中的信息并暂时保存一次
buffer = [];
// collect all mousemove events on #mydiv
$('#mydiv').mousemove(function(event) {
buffer.push(event.pageX + ", " + event.pageY)
})
createInterval(function() {
if (buffer.length > 0) { // save only if something happened
var to_transmit = buffer; // theoretically between this line and the next
// line you may miss an event, but in practice I wouldn't worry
buffer = []; // new buffer - next events will be inserted here
$.ajax({url: "/post/here/", data: to_transmit})
}
},
5000); // send ajax every 5 seconds