Angularjs管理大量数据

时间:2016-03-02 15:27:50

标签: angularjs json

当我从服务器检索json文件时,我遇到了一个大问题。这个json文件有1.2 MB的数据。所以这是一个非常大的文件。所以,在我的初始化函数中,我这样做:

$scope.init = function(allmatrix) {
    if (allmatrix.length > 0) {
        $scope.jsonResult = allmatrix[0];
    }
}

这意味着每次进入主页时我都要下载1.2MB的数据(json数据在内部' allmatrix'变量)。所以我真的不知道该如何应对,因为它现在效率不高。也许,我需要缓存数据或在angularjs中使用线程(因为我的用户界面保持阻塞两分钟)。如果有人已经遇到过这个问题,你能帮我吗?

1 个答案:

答案 0 :(得分:0)

你可以做几件事,但这就是很多数据。你确定每次加载主页都需要它吗?

1)您可以在Web服务器上启用压缩。这将减少数据通过网络传输的时间。根据您运行的Web服务器类型,启用压缩会有所不同。以下是使用tomcat进行操作的示例:http://viralpatel.net/blogs/enable-gzip-compression-in-tomcat/

2)缩短要传输的json对象中的键。 Json可能非常具有反复性,所以尽量让它尽可能小。您牺牲了可读性,但可以显着缩小数据大小。例如 原文:

[{'longkey1':'val1','longkey2':'val12},{'longkey1':'val3','longkey2':'val14},...]

改为:

[{'a':'val1','b':'val12},{'a':'val3','b':'val14},...]

3)您说您的主页被阻止,直到加载了json数据?您应该异步提取数据,以便您的页面可以加载并显示有意义的加载数据,请稍候'信息。这会更优雅。你并没有真正提供从你的服务器获取json的代码,因此很难对此进行更多的评论。

4)因为每次访问主页时都需要加载数据,所以将网站转换为单页应用程序可能是有意义的。这样,在第一次加载时,您可以加载所有数据,然后您可以在任何地方导航,即使您导航回主页,也不需要再次重新加载该json。只是不要刷新!

5)如果您加载的json数据不经常更改,缓存也可以正常工作(可能与上述相关)。

希望这有帮助。

相关问题