淺談H5頁面性能優(yōu)化1

微信圖片_20170910165537.jpg

傳統(tǒng)流程

通常將html妥曲、js个粱、css等靜態(tài)資源放入cdn上古毛,然后頁面加載后,再通過CGI去拉取最新的 數(shù)據(jù)都许,進行拼接展示稻薇。 這樣可以利用CDN的多低部署和就近接入等優(yōu)勢,同時提高了服務(wù)器的并發(fā)能力
CGI是啥:不是一種語言床绪,也不是一種技術(shù)断凶,而是一種模式尔许,Common Gateway Interface,簡稱CGI案狠。在物理上是一段程序蹬敲,運行在服務(wù)器上,提供同客戶端 HTML頁面的接口莺戒,“通用網(wǎng)關(guān)接口”伴嗡,這就是CGI的中文意思。

換句話从铲,只要是提供HTML的服務(wù)器端程序都可以叫CGI瘪校,APS、PHP名段、JSP這些都是阱扬,你用C語言寫一個可以提供HTML的服務(wù)器端EXE文件,也叫CGI伸辟。

  1. 用戶點擊后麻惶,經(jīng)過終端一系列初始化流程 ,比如進程啟動信夫、Runtime初始化窃蹋、創(chuàng)建webview等等;
  2. 完成webview初始化后静稻,開始去CDN上請求html加載頁面警没;
  3. 頁面發(fā)起CGI請求對應(yīng)的數(shù)據(jù)或者通過localStorage獲取數(shù)據(jù),數(shù)據(jù)回來后再對dom進行操作更新振湾。
    概括:
    初始化 webview -> 請求頁面 -> 下載數(shù)據(jù) -> 解析HTML -> 請求 js/css 資源 -> dom 渲染 -> 解析 JS 執(zhí)行 -> JS 請求數(shù)據(jù) -> 解析渲染 -> 下載渲染圖片

可以看出上述流程存在著幾個問題:

微信圖片_20170910170542.jpg
  1. 從外網(wǎng)統(tǒng)計數(shù)據(jù)來看杀迹,用戶的終端耗時在1s以上,這意味著在這1s多的時間內(nèi)押搪,網(wǎng)絡(luò)是完全空閑等待的树酪,非常浪費;
  2. 頁面的資源和數(shù)據(jù)完全依賴于網(wǎng)絡(luò)大州,特別是用戶在弱網(wǎng)絡(luò)場景下续语,頁面會出現(xiàn)很長時間的白屏,體驗非常差摧茴;
  3. 因為頁面的數(shù)據(jù)依賴于動態(tài)拉取绵载,加載完頁面后,往往看到的是一些模塊先轉(zhuǎn)菊花苛白,再展示娃豹,體驗也是非常不好的。同時這里涉及到較多數(shù)據(jù)更新购裙,經(jīng)常要更新DOM 懂版,性能上也有不少開銷。

優(yōu)化方案

終端優(yōu)化

針對終端耗時1s以上的情況躏率,做以下優(yōu)化

  1. webview 池:可以用兩個或多個 webview 重復(fù)使用躯畴,而不是每次打開 H5 都新建 webview民鼓。不過這種方式要解決頁面跳轉(zhuǎn)時清空上一個頁面,另外若一個 H5 頁面上 JS 出現(xiàn)內(nèi)存泄漏蓬抄,就影響到其他頁面丰嘉,在 APP 運行期間都無法釋放了
  2. 預(yù)加載:在一個進程內(nèi)首次初始化 webview 與第二次初始化不同,首次會比第二次慢很多嚷缭。原因預(yù)計是 webview 首次初始化后饮亏,即使 webview 已經(jīng)釋放,但一些多 webview 共用的全局服務(wù)或資源對象仍沒有釋放阅爽,第二次初始化時不需要再生成這些對象從而變快路幸。我們可以在 APP 啟動時預(yù)先初始化一個 webview 然后釋放,這樣等用戶真正走到 H5 模塊去加載 webview時就變快了付翁。

服務(wù)端渲染-靜態(tài)直出

服務(wù)器端拉取首屏數(shù)據(jù)通過Nodejs進行渲染简肴。然后生成一個包含了首屏數(shù)據(jù)的html文件,這樣展示首屏的時候百侧,就可以解決內(nèi)容轉(zhuǎn)菊花的問題了砰识。
缺點是:服務(wù)器端處理耗時增加。不過現(xiàn)在html都會發(fā)布到cdn上移层,webview直接從cdn上面獲取仍翰,這塊耗時對用戶沒有造成影響。

客戶端優(yōu)化

  1. 降低請求量: 合并資源观话、減少HTTP請求。minify/gzip壓縮越平、webp频蛔、lazyload。
  2. 加快請求速度: 預(yù)解析dns秦叛,減少域名數(shù)晦溪、并行加載、cdn分發(fā)
  3. 緩存: http協(xié)議緩存請求挣跋、離線緩存mainfest三圆、離線數(shù)據(jù)緩存localStorage
  4. 渲染: js/css優(yōu)化,加載順序

離線預(yù)推

微信圖片_20170910171745.jpg

頁面發(fā)布到cdn上后避咆,webview需要發(fā)起網(wǎng)絡(luò)請求去拉取舟肉,當(dāng)用戶在弱網(wǎng)情況下,這個加載時間就很長查库。于是我們通過離線預(yù)推的方式路媚,把頁面的資源提前拉取到本地。當(dāng)用戶加載資源的時候樊销,相當(dāng)于從本地加載整慎,即使沒有網(wǎng)絡(luò)脏款,也能展示首屏頁面,這個也就是大家熟悉的離線包裤园。

微信圖片_20170910172013.jpg

預(yù)加載

用戶收到push的時候撤师,可以利用后臺來提前獲取數(shù)據(jù)

總結(jié)優(yōu)化思路:

從終端優(yōu)化、客戶端優(yōu)化拧揽、服務(wù)端渲染丈氓、離線預(yù)推、預(yù)加載等方面優(yōu)化强法,思路從
緩存万俗、預(yù)加載、并行方面出發(fā)考慮饮怯。緩存一切網(wǎng)絡(luò)請求闰歪、盡量在用戶打開之前就加載好所有內(nèi)容,能并行做的事情不串行做蓖墅。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末库倘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子论矾,更是在濱河造成了極大的恐慌教翩,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贪壳,死亡現(xiàn)場離奇詭異饱亿,居然都是意外死亡,警方通過查閱死者的電腦和手機闰靴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門彪笼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蚂且,你說我怎么就攤上這事配猫。” “怎么了杏死?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵泵肄,是天一觀的道長。 經(jīng)常有香客問我淑翼,道長腐巢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任窒舟,我火速辦了婚禮系忙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惠豺。我一直安慰自己银还,他們只是感情好风宁,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蛹疯,像睡著了一般戒财。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捺弦,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天饮寞,我揣著相機與錄音,去河邊找鬼列吼。 笑死幽崩,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的寞钥。 我是一名探鬼主播慌申,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼理郑!你這毒婦竟也來了蹄溉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤您炉,失蹤者是張志新(化名)和其女友劉穎柒爵,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赚爵,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡棉胀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了囱晴。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膏蚓。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖畸写,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情氓扛,我是刑警寧澤枯芬,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站采郎,受9級特大地震影響千所,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蒜埋,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一淫痰、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧整份,春花似錦待错、人聲如沸籽孙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽犯建。三九已至,卻和暖如春瓜客,著一層夾襖步出監(jiān)牢的瞬間适瓦,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工谱仪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留玻熙,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓疯攒,卻偏偏與公主長得像嗦随,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子卸例,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容