1

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

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

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

4

2 回答 2

2

如果尚未加载,为什么不根据需要加载数据。

例如,您可以加载级别 1。

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

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

就个人而言,我会告诉用户有一个加载请求,所以他们知道发生了什么。

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

于 2012-04-04T01:28:24.430 回答
0

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

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

于 2012-04-04T01:35:06.473 回答