前篇文章講述過性能優化,主要是滾動條、一次性綁定、數組對象過濾。
這篇文章講一下,關於界面的問題,之前有一篇文章關於描述過界面緩存的文章,有三種方法:全局配置、路由配置、界面配置。詳情可自行查看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屬性區分,這個方法可以實現刪除,但是不知道有什么副作用