【问题标题】:Storing All Loaded Data Onto One Javascript Object将所有加载的数据存储到一个 Javascript 对象中
【发布时间】:2012-04-17 17:27:00
【问题描述】:

我只是需要一些关于这是否明智的建议。我主要通过 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 级”将是地理区域中部门类别中列出的产品或条目。

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

如果有道理,请指教。我想简化的问题是,在对象变得笨拙并阻塞浏览器之前,您可以制作多大的对象?

【问题讨论】:

    标签: javascript jquery ajax object


    【解决方案1】:

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

    例如,您可以加载关卡 1。

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

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

    就我个人而言,我会向用户展示有一个加载请求,以便他们知道发生了什么。

    预加载整个网站是一种浪费,IMO。

    【讨论】:

    • 您可以在页面或用户空闲时“预加载”所有内容。比如浏览页面1时,在后台加载其他页面。
    • @Joseph - 你可以,但是你打了很多电话,可能对用户没有任何好处,如果他们在移动设备上,并为他们的带宽付费,那么它会是一个问题。此外,这将再次占用内存,如果用户只查看级别 2 中的一个部分,那么当大多数不使用时从级别 2 开始加载所有内容会很烦人。
    • 不,我的意思不是预加载整个站点,我的意思是将数据存储到单个对象上,而不是使用多个对象或覆盖数据。数据将“缓存”到单个对象上。这是推荐的吗?
    • @philtune - 我不会把它放在一个对象中,因为遍历它会更慢。我会在每个级别上使用一个单独的数组,所以如果你有四个级别,那么四个对象数组。并使用该数据的名称或标识符存储一个对象,然后存储数据本身。
    • 好的,这就是我要找的答案。谢谢@JamesBlack!
    【解决方案2】:

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

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

    【讨论】:

    • 这就是我的意思。它将缓存用户已经加载到一个全局对象中的数据。我不知道这是否明智。对象大小有限制吗?另一种方法是制作单独的对象或允许在对象上覆盖数据(这意味着它不会缓存所有内容)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2021-02-24
    • 1970-01-01
    相关资源
    最近更新 更多