如何避免重载大型JavaScript数组?

时间:2015-11-27 12:16:20

标签: javascript jquery html ajax

我在Web应用程序的每个页面上都有一个大型的40,000字数组从数据库加载到JavaScript / HTML数组中......优化它的最佳方法/技术是什么?为了避免这种不必要的下载。

  1. 以某种方式将数组保存在cookie中并从那里读取?
  2. 使用ajax动态加载数组只需要所需的部分吗?
  3. 通常的做法是什么?

5 个答案:

答案 0 :(得分:1)

在现代浏览器上,您可以使用sessionStorage在当前会话期间保持该值,或localStorage让它在会话之间保持不变。

注意:两者都只允许存储字符串 - 您必须序列化数组(例如,转换为JSON)并在检索时对其进行反序列化。

如果您想将单词列表实际用作具有高效查找功能的本地数据库,您可能还需要调查indexedDB

答案 1 :(得分:0)

您可以将数据放入会话并检索它,每次都可以使用相同的数据,而不是每次都取出相同的数据。

谢谢&最好的问候。

答案 2 :(得分:0)

如果您需要所有页面中的所有40k字,那么您可以使用localStorage或sessionStorage。请记住,当标签/窗口关闭时,sessionStorage将删除已保存的数据,这样当在新窗口/标签页中打开网站时,将再次下载整个数组。

如果你只需要在不同页面中的数组的特定部分,我会将数组的元素整理成分类/类别(如果你能够),这样你就可以只下载特定部分所需的部分。你的申请。 这取决于数组的组成,如果它只由单词或复杂对象组成。这将有助于避免您第一次访问网站时加载速度缓慢。

答案 3 :(得分:0)

如果数组总是相同的(不需要更新它),我会创建一个js文件,然后我将它添加到每个html页面。浏览器的缓存将完成剩下的工作以避免不必要的重新加载。类似的东西:

big-array.js 文件:

var myBigArray=[...]

在每个html文件中

<html>
 ... whatever you need
<script src="/my-path/big-array.js"></script>
...my other scripts here
</html>

答案 4 :(得分:-1)

要正确回答这个问题有点困难,因为这样做需要有关您的托管环境以及您有权访问的内容的更多信息。如果您有可用的服务器端语言,例如PHP,您可以查看缓存,这通常是处理跨页面重复使用的数据的最有效方法。也许您可以发布有关您可以使用哪些技术的更多信息?