(一)性能效果
原文鏈接:Improving-the-performance-of-your-ionic-application,頗有刪改,不對(duì)之處歡迎指正。
Hybrid App最擔(dān)心的問(wèn)題,然而Ionic已經(jīng)讓我們看到hybrid app是有可能獲得好的性能效果,但是有時(shí)為了讓延遲卡頓的地方更順滑,采取一些優(yōu)化依然是必須的。
1.原生的滾動(dòng)
這個(gè)實(shí)現(xiàn)可能會(huì)給你最高的流暢性加成。除了使用默認(rèn)的Javascript的滾動(dòng),ionic提供了使用原生滾動(dòng)的選擇。
我們可以選擇在每個(gè)view中開(kāi)啟它,在ion-content標(biāo)簽中放置這樣的屬性:
? ?overflow-scroll="true"
或者可以對(duì)所有view開(kāi)啟它:
? $ionicConfigProvider.scrolling.jsScrolling(false);
2.Crosswalk
Crosswork為App提供了一套Chrome Webview,獲得了更好的性能效果和穩(wěn)定性。
Ionic推薦在老版本的Android設(shè)備中(4.0-4.3)使用Crosswalk,然而我也發(fā)現(xiàn)即使是在更新的Android設(shè)備(4.3+)中,也能有巨大的性能提升。CSS動(dòng)畫(huà)的提升是最能感覺(jué)到的。
運(yùn)行這條指令可以為我們的項(xiàng)目添加Crosswalk
?$ ionic browser add crosswalk
如果體積上的增加成為了麻煩,crosswalk lite可能值得你考慮。它比正常Crosswalk項(xiàng)目的小一半,這也意味著它刪除了一些功能:
目前僅支持Android
不支持更高級(jí)的特性比如WebRTC
3.使用GPU Hack
不用擔(dān)心,只需要實(shí)現(xiàn)一些很小的hack。當(dāng)使用CSS動(dòng)畫(huà)時(shí),采用這兩種方式:
-webkit-transform: translateZ(0);
-webkit-transform: translate3d(0,0,0);
這兩條語(yǔ)句可以強(qiáng)制創(chuàng)建一個(gè)新的圖層并把渲染交給GPU而不是CPU。這有可能加速你的動(dòng)畫(huà),但親身測(cè)試是這里的關(guān)鍵。
4.使用Ionic生命周期事件
你可能已經(jīng)感覺(jué)到了某些卡頓和磕巴在跳轉(zhuǎn)到另一個(gè)頁(yè)面時(shí)。我們可以避免這種延時(shí),通過(guò)在Ionic生命周期的事件中包裝好數(shù)據(jù)。
假設(shè)我們需要加載一些職位信息,我們可以在beforeEnter事件中使用這個(gè)調(diào)用
$scope.$on('$ionic.beforeEnter', function()
{
appointmentsService.getAllAppointments();
}
這個(gè)事件會(huì)在我們將要進(jìn)入view時(shí)觸發(fā),使過(guò)渡動(dòng)畫(huà)時(shí)幾乎沒(méi)有卡頓。
(二) ?關(guān)于ionic的安全性
作者:魯小夫
鏈接:www.zhihu.com/question/28468459/answer/41622094
來(lái)源:知乎
引用一 ?: ?寫(xiě)過(guò) js混淆器,談一些淺顯的個(gè)人看法。
個(gè)人認(rèn)為,js的不可讀化處理分為三個(gè)方面:壓縮(compression)、混淆(obfuscation)和加密(encryption)。 (不可讀化處理,這是我自己發(fā)明的術(shù)語(yǔ),一切會(huì)增加代碼不可讀性的代碼轉(zhuǎn)換, 都可以這么叫,“增加代碼不可讀性”可能是代碼轉(zhuǎn)換的結(jié)果或者目的).
1. 壓縮
這一操作的目的,是讓最終代碼傳輸量(不代表代碼量, 也不代表文件體積)盡可能小。壓縮js的工具,常見(jiàn)的有:YUI Compressor、UglifyJS、Google Closure Compiler 等。
通常在代碼壓縮的過(guò)程中,只改變代碼的語(yǔ)法,代碼的語(yǔ)義和控制流不會(huì)有太大改變。
常見(jiàn)做法是把局部變量縮短化,把一些運(yùn)算進(jìn)行等價(jià)替換等。代碼壓縮對(duì)于代碼保護(hù)有一些幫助,但由于語(yǔ)義和控制流基本沒(méi)變,起不了太大作用。
在壓縮層面上,代碼不可讀只是一種附帶傷害,不是最終目的。
2. 混淆
這一操作的目的,是讓代碼盡可能地不可讀,主要用作代碼保護(hù)。
讓代碼不可讀,增加分析的難度,這是唯一目的。混淆過(guò)后文件體積變大一倍也沒(méi)關(guān)系,代碼量變多也沒(méi)關(guān)系,運(yùn)算慢50% 也沒(méi)關(guān)系。
常見(jiàn)的做法有:分離常量、打亂控制流、增加無(wú)義代碼、檢查運(yùn)行環(huán)境如果不對(duì)就罷工,等等。
在混淆層面上,代碼不可讀是最終目的。
值得一提的是,Google Closure Compiler 的 Advance Level Compression 會(huì)壓縮類(lèi)和對(duì)象的成員,其壓縮結(jié)果很難分析,也可以認(rèn)為是一種混淆,但兼容性不太好。
廣告時(shí)間:我寫(xiě)的 js混淆器,中文名叫 “看起來(lái)很厲害的 JS 編譯器”, 英文名叫做 The Impressive JS.Segment.Compiler ,看起來(lái)很厲害的 JS 編譯器。
3. 加密
說(shuō)實(shí)話(huà)我很難對(duì)加密做一個(gè)定義,因?yàn)榧用茉赪eb界有太多歧義了。
有加密就有解密,意味著加密操作可逆,密文可以明文化。
就這樣看來(lái),在Web界,可以稱(chēng)之為加密的東西包括:HTTPS傳輸、JavaScript實(shí)現(xiàn)對(duì)稱(chēng)加密或者不對(duì)稱(chēng)加密等等。
這樣看來(lái),不可逆的代碼壓縮和混淆就不能列入加密這個(gè)范疇了。
代碼加密意味著:將代碼明文進(jìn)行可逆的變換(加密),生成密文;將密文進(jìn)行逆變換(解密),可以還原明文;最終運(yùn)行環(huán)境運(yùn)行的是解密代碼。
結(jié)語(yǔ)
實(shí)際上大家對(duì)壓縮、混淆、加密這三個(gè)概念還是挺不清晰的,我在這里說(shuō)一些個(gè)人見(jiàn)解,希望有幫助。
在現(xiàn)實(shí)項(xiàng)目中,我是多種手段結(jié)合的:
對(duì)于不需要做代碼保護(hù)的項(xiàng)目,比如個(gè)人博客,做代碼壓縮,加快載入速度,這就夠了。
對(duì)于需要做一些代碼保護(hù),防止抄襲的項(xiàng)目,可以在源碼中加入一些開(kāi)發(fā)者的信息和防護(hù)代碼,然后混淆和壓縮。很不幸的是,我這方面總是做得不太好,防君子防不了小人啊哈哈。
引用2 : ?登錄注冊(cè)還是用https安全。
作者:lebornjose
鏈接:www.zhihu.com/question/28468459/answer/136543578
來(lái)源:知乎
在客戶(hù)端base64或者md5什么的真心沒(méi)用,我直接監(jiān)聽(tīng)到你所謂的密文,然后用腳本發(fā)起一個(gè)http請(qǐng)求就可以登錄上去了。
http在網(wǎng)絡(luò)上是明文傳輸?shù)?,代理和網(wǎng)關(guān)都能夠看到所有的數(shù)據(jù),在同一局域網(wǎng)內(nèi)也可以被嗅探到,你可以開(kāi)個(gè)wireshark抓下局域網(wǎng)的包試試看。
我認(rèn)為加密也沒(méi)有提高什么攻擊難度,因?yàn)楣粽呔蜎](méi)必要去解密原始密碼,能登錄上去就表示目標(biāo)已經(jīng)實(shí)現(xiàn)了,所以,難度沒(méi)有提高
prod的優(yōu)化啟動(dòng)速度 - 這個(gè)是在ionic2的QQ群里面大神說(shuō)的
在編譯命令的最后加上--prod會(huì)讓app的啟動(dòng)速度加快。
ionic build android --release --prod
無(wú)論是debug版本還是release版本都適用。
附上 ?: 關(guān)于js的加密:www.itdecent.cn/p/83f81d1c0de7
小結(jié) ?: 其實(shí)對(duì)于A(yíng)PP性能方面的考量,個(gè)人認(rèn)為有3點(diǎn)
1.啟動(dòng)速度 2. 運(yùn)行是否流暢 3.崩潰率. 就目前已經(jīng)使用ionic2開(kāi)發(fā)上線(xiàn)的APP來(lái)看,這些問(wèn)題還不是很明顯,開(kāi)發(fā)過(guò)程中還要看項(xiàng)目具體情況來(lái)進(jìn)行調(diào)研調(diào)整.大家請(qǐng)拭目以待!有經(jīng)驗(yàn)的朋友歡迎批評(píng)指正.