1、首頁啓動速度程序員
啓動過程當中作的事情越少越好(儘量將多個接口合併)算法
不在UI線程上做耗時的操做(數據的處理在子線程進行,處理完通知主線程刷新節目)數據庫
在合適的時機開始後臺任務(例如在用戶指引節目就能夠開始準備加載的數據)json
儘可能減少包的大小後端
優化方法:緩存
量化啓動時間性能優化
啓動速度模塊化服務器
輔助工具(友盟,聽雲,Flurry)app
2、頁面瀏覽速度數據庫設計
json的處理(iOS 自帶的NSJSONSerialization,Jsonkit,SBJson)
數據的分頁(後端數據多的話,就要分頁返回,例如網易新聞,或者 微博記錄)
數據壓縮(大數據也能夠壓縮返回,減小流量,加快反應速度)
內容緩存(例如網易新聞的最新新聞列表都是要緩存到本地,從本地加載,能夠緩存到內存,或者數據庫,根據狀況而定)
延時加載tab(好比app有5個tab,能夠先加載第一個要顯示的tab,其餘的在顯示時候加載,按需加載)
算法的優化(核心算法的優化,例若有些app 有個 聯繫人姓名用漢語拼音的首字母排序)
3、操做流暢度優化:
Tableview 優化(tableview cell的加載優化)
ViewController加載優化(不一樣view之間的跳轉,能夠提早準備好數據)
4、數據庫的優化:
數據庫設計上面的重構
查詢語句的優化
分庫分表(數據太多的時候,能夠分不一樣的表或者庫)
5、服務器端和客戶端的交互優化:
客戶端儘可能減小請求
服務端儘可能作多的邏輯處理
服務器端和客戶端採起推拉結合的方式(能夠利用一些同步機制)
通訊協議的優化。(減小報文的大小)
電量使用優化(儘可能不要使用後臺運行)
6、非技術性能優化
產品設計的邏輯性(產品的設計必定要符合邏輯,或者邏輯儘可能簡單,不然會讓程序員抓狂,有時候用了好大力氣,才能夠完成一個小小的邏輯設計問題)
界面交互的規範(每一個模塊的界面的交互儘可能統一,符合操做習慣)
代碼規範(這個能夠隱形帶來app 性能的提升,好比 用if else 仍是switch ,或者是用!仍是 ==)
code review(堅持code Review 持續重構代碼。減小代碼的邏輯複雜度)
平常交流(常常分享一些代碼,或者邏輯處理中的坑)