我只需要一些建议,看看这是否明智。我主要通过 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”是部门中的类别在 geo 中,并说“级别 4”将是在 geo 中部门的类别中列出的产品或条目。
现在,我的方法是,我有一个包含所有地理区域的对象,每次加载新的地理区域时都会用新的部门列表覆盖第二个对象,第三个对象保存我的类别,第四个保存我的列表/产品.
如果有道理,请指教。我猜想简化的问题是,在对象变得笨重并使浏览器陷入困境之前,您可以将其制作成多大?
最佳答案
如果还没有加载,为什么不只根据需要加载数据。
例如,您可以加载级别 1。
然后,当用户选择第 2 级时,加载它(如果尚未存在)并继续。
因此,您可以保留已加载的内容,但只要通知他们您正在检索数据,如果这需要时间,否则人们可能会理解您正在加载它。
就个人而言,我会向用户显示有一个加载请求,这样他们就知道发生了什么。
IMO,预加载整个网站是一种浪费。
关于javascript - 将所有加载的数据存储到一个 Javascript 对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10003767/