前篇文章讲述过性能优化,主要是滚动条、一次性绑定、数组对象过滤。
这篇文章讲一下,关于界面的问题,之前有一篇文章关于描述过界面缓存的文章,有三种方法:全局配置、路由配置、界面配置。详情可自行查看http://www.cnblogs.com/happen-/p/5985434.html
在后期优化的过程中发现,通过url传参的时候,路由相同,但是参数不同,界面会产生缓存的,对程序的运行不利,平白的消耗手机内存,代码结构如下:
如上如,标红的两个其实是一样的路由,是同一个界面,我的这两个界面都是动态上拉加载数据的列表,可能数据会很多,缓存的个数越多,手机运行可能会越慢。
后来在网上找了很多方法,下边对我找的方法一一描述,并加上一些我自己的观点,可能不正确,请大家指正:
1.在跳转之前加清除缓存
代码:
var _goback = function() { // debugger; $ionicHistory.clearCache(); $state.go('app.search.index'); };
效果如下:
代码看着好像生效了,但是他会把一些其他的缓存界面都删除掉,但是当前路由树的跟路由节点缓存是不会删除的,方法可行,但是删除所有的可能会造成其他方面的问题,这个暂时不知道怎么解决。
参考文档:http://www.tuicool.com/articles/7Bz6R3J
引申:有些app需要做清除内存的功能,之前没有思路,根据这个倒是可以实现,方法如下:
$ionicHistory.clearCache();
$ionicHistory.clearHistory();
2.清除指定界面的缓存【我本地实验没有效果】
$ionicHistory.clearCache([$state.current.name])
参考地址
http://stackoverflow.com/questions/25192172/clear-history-and-reload-page-on-login-logout-using-ionic-framework?answertab=active#tab-top
3.从$ionic histroy中删除
参考地址https://github.com/driftyco/ionic/issues/3750
4.手动删除DOM
手动查找需要删除的对象,可以根据<ion-view>的state属性区分,这个方法可以实现删除,但是不知道有什么副作用