将所有加载的数据存储到一个Javascript对象中

Storing All Loaded Data Onto One Javascript Object

本文关键字:一个 Javascript 对象 加载 存储 数据      更新时间:2023-09-26

我只需要一些关于这是否明智的建议。我主要通过AJAX请求加载我的网站数据。为了节省加载时间和服务器调用,我将所有加载到全局对象的数据保存下来,如果用户再次选择页面,则只回收这些数据。

我想知道将整个站点缓存到一个对象上是否明智,例如:

var page = ['level 1','level 2','level 3','level 4'];
var mysiteobj = [];
if (page[0] == 'level 1')
   if (!mysiteobj['level 1'])
      $.ajax(/*load data*/).done(function(data){ mysiteobj['level 1'] = data; /*display data*/ });
   else /*display mysiteobj['level 1']*/
   if (page[1] == 'level 2')
      if (!mysiteobj['level 1']['level 2'])
         $.ajax(/*load data*/).done(function(data){ mysiteobj['level 1']['level 2'] = data; /*display data*/ });
      else /*display mysiteobj['level 1']['level 2']*/
 ...etc

等等为了澄清这个相当奇怪的符号,"级别1"是用户可能查找的所有地理区域,"级别2"是用户可以查找的地理区域中的所有部门,"级别3"是地理区域中部门中的类别,而"级别4"则是地理区域内部门中类别中列出的产品或条目。

现在,我的方法是,我有一个包含所有地理区域的对象,每次加载新的地理区域时,第二个对象都会被新的部门列表覆盖,第三个对象包含我的类别,第四个包含我的列表/产品。

如果这有道理,请提出建议。我想简化的问题是,在一个对象变得笨拙并阻碍浏览器之前,你能把它做成多大?

如果还没有加载,为什么不根据需要加载数据呢。

例如,可以加载级别1。

然后,当用户选择级别2时,如果还没有,则加载该级别,然后继续。

因此,你可以保留已经加载的内容,但只要通知他们你正在检索数据,如果这需要时间,否则人们可能会理解你正在加载它

就我个人而言,我会向用户显示有一个加载请求,这样他们就知道发生了什么

整个站点的预加载是一种浪费。

考虑到让ajax请求返回大数据集是不明智的。。。。

我认为你可以将这些数据存储到Redis/Memcached服务器中,并制作一个javascript函数来捕捉你想要的东西。将这么多数据放入全局变量并让用户为此付费是不明智的。