javascript - 使用 JavaScript 替代本地存储

标签 javascript object local-storage

我正在开发一个需要使用 ajax 频繁发布到服务器的应用程序,这会降低性能。作为解决方法,我开始测试 localStorage 作为替代方案。结果不太理想,频繁检索/设置 localStorage 非常慢(我惊讶地发现这一点),并且会降低性能。

另一方面,我真的不想在每次触发事件时都发布到服务器,因为这与 localStorage 的性能几乎相同。

我想知道还有哪些其他解决方案?

我可以创建一个在事件触发时不断更新的“数据”对象吗?具有回退到发布的超时功能吗?如果是这样,您将如何设置?

有哪些选项可以存储可以快速检索的事件数据?如果有人能指出我正确的方向,我将非常感激。

最佳答案

简单的解决方案是收集您想要保存在数组中的信息,并偶尔保存一次

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

关于javascript - 使用 JavaScript 替代本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23914633/

相关文章:

javascript - Angular:如何使 localStorage 异步工作

popup - 加载项及其弹出浏览器窗口是否共享同一个 localStorage?

javascript - 当我创建一个新项目时,angular 7 不会询问是否使用路由

javascript - 在 javascript 中映射对象数组并按键分组

javascript - 卡在 JavaScript 变量闭包中

javascript - 在自执行函数中定义对象的原型(prototype)

c++ - 将对象分配给数组 C++

jwt - 在 sveltekit 中持久化用户状态

javascript - 固定长度的随机数

带有 html 表单验证的 Javascript 不起作用