【发布时间】:2015-09-08 07:03:02
【问题描述】:
我们在 Angular 应用程序中使用 ng-repeat 出现了巨大的渲染峰值。 主页显示大量封面图片(“::”和“track by”已到位)。 首次加载时,它可以正常工作。
但如果用户更改状态(我们使用 UI-Router)并随后返回主页,则在桌面上延迟大约 2 秒,在移动设备上延迟最多 10 秒。
它应该是即时的:所有 json 查询都被缓存。并且 ng-repeat 已经渲染了该内容一次。
作为临时解决方案,我们使用 angular ux datagrid (https://github.com/obogo/ux-angularjs-datagrid) 它可以立即返回首页,但它不应该在水平模式下工作。而且使用专用网格来缓存 ng-repeat(或它在幕后所做的任何事情)似乎有点过头了。
所以问题如下:如何避免 ng-repeat 在状态更改时重新渲染内容?
【问题讨论】:
-
使用缓存的共享服务
-
缓存什么?所有 Json 都使用 $cacheFactory 进行缓存。问题在于渲染
-
您是否正在压缩服务器上的图像?他们多大?你用css调整它们的大小吗?您可以缓存您认为需要缓存的任何内容。老实说,它听起来像是和图像的东西,如果你能做一个小提琴或其他东西来展示它来修补它会很酷。可以帮助您轻松很多。
-
如果页面根本不需要重新渲染,你可以缓存 dom,使用指令。
标签: javascript angularjs performance caching angularjs-ng-repeat