我有一个非常大的angularjs web应用程序,当你第一次进入网站时它会加载大文件。该站点由几个SPA组成,每次用户从一个站点更改为另一个站点时,此数据将丢失并且必须再次加载。此外,如果用户按下刷新,则数据也会再次加载。
这个数据在用户会话期间不太可能发生变化,所以如果我们能够坚持下去并且只在有更新时重新加载它会很棒。我知道本地和会话存储,但他们有5000k或10000k的限制,这是不够的。我需要20000k存储空间。
有没有办法做到这一点?
答案 0 :(得分:1)
几个月前我们遇到了同样的问题,但没有找到有效的解决方案。我们使用了两种方法:
使用一个SPA(将各种SPA放入Super SPA中)。我们有机会这样做。不知道这是否适合您。使用状态而不是网址路由的模块ui-router可能会有所帮助。
我们使用分页数据来减少初始加载的大小。
如果您需要大量数据来计算,例如在浏览器或渲染图形中的统计信息,请考虑将此计算移动到后端。
您还可以使用http服务加载数据并对其进行缓存。但是,如果在会话处于活动状态时未更改数据,则这只是一个选项。
答案 1 :(得分:1)
是和否。 您可以使用服务器端代码以多种方式将javascript注入页面,因此您不必向服务器发出ajax请求来获取数据。 例如,如果您使用php,则可以执行类似
的操作<?php
$script = "<script> var Data = $data;</script>";
echo $script;
?>
然后在您的控件内执行类似
的操作$scope.data = Data;
但浏览器不是为了立即处理大数据而构建的。如果您的数据大于5MB,您将获得非常糟糕的用户体验,并且您的应用程序将崩溃。因此,您应该以一种方式组织数据,以便在服务器端处理所有数据聚合,并将小包发送给客户端。
答案 2 :(得分:0)
也许你可以创建一个使用$ http来异步加载数据并将cache参数设置为true的服务,如下所述:How to cache an http get service in angularjs