【鄭州第一百一十四期小課堂】如何進行網站性能優化?

1.背景介紹

大概從2000年以來,互聯網在中國發展越來越快,隨著高層提出“互聯網+”的概念以后,互聯網的發展更是迎來了一個很大的發展契機。隨之而來的,是網名數量的增加,網站日訪問量的提升。這些繁榮的背后,需要的是良好的網站性能的提高,以滿足較好的用戶體驗和降低日常維護的成本。如何做到呢?今天同大家分享、討論一下前端這方面值得注意的地方!

2.知識剖析

2.1什么是網站的性能?

用戶訪問網站的整個流程中:用戶輸入網站域名,通過DNS解析,找到目標服務器IP,請求數據經互聯網達到目標服務器,目標服務器收到請求數據,進行處理(執行程序、訪問數據庫、文件服務器等)。處理完成,將響應數據又經互聯網返回給用戶瀏覽器,瀏覽器得到結果進行計算渲染顯示給用戶。這個整個過程就時刻就體現著網站的性能。更直觀地講,訪問一個網頁的快慢,與之交互得到的回饋的快慢,就是網站的性能好壞的體現。

一般把整個過程,分為三段路徑:

1、第一段在用戶和瀏覽器端,主要負責發出用戶請求,以及接受響應數據進行計算渲染顯示給用戶;

2、第二段在網絡上,負責對請求數據、響應數據的傳輸;

3、第三段在網站服務器端,負責對請求數據進行處理(執行程序、訪問數據庫、文件等),并將結果返回;

2.2 前端有哪些可以進行優化的地方

從上邊的分析中我們可以看出,如果要優化一個網站的性能,它將是一個綜合性的處理過程,涉及到前端,后端,網絡等各種因素。對于我們前端而言,可以做些什么呢?

一、 我們可以想辦法減少一個頁面訪問所產生的http連接次數。一個完整的請求需要經過 DNS尋址、與服務器建立連接、發送數據、等待服務器響應、接收數據這樣一個 “漫長” 而復雜的過程。每一次的請求,都意味著時間上和資源上的一次整體消耗。減少請求,對于提升性能,是個不錯的出發點。

減少HTTP請求的途徑:

1. 簡化頁面:保持頁面簡潔、減少資源的使用是最直接的辦法。不過追求華麗的當下,做到這一點似乎有些為難。

2. 合理設置 HTTP緩存:盡可能的讓資源能夠在緩存中待得更久,越多的緩存,意味著越少的向后端發送的請求數量。

3. 圖片的壓縮:我們做任務時遇到用到過的CSS Sprites。將網站的圖片,尤其一些小圖標合并為一張圖片,通過背景圖片和背景定位的方法渲染到頁面。還有iconfont阿里矢量圖標庫,將圖片轉化成樣式,或者字體等方法,也是個不錯的實現方法。

4. 資源合并與壓縮:在引入外部js、css文件時,想辦法減少js、css文件的數量,將多個js或者css文件可能地進行合并。使用框架的js時,選擇min版來引入,不使用完整版。提高css代碼的復用性等。使用一些壓縮工具對其大小進行壓縮。

二、 使用外部CSS樣式,并將外部CSS樣式的放在HEAD中。不使用內聯樣式。減少使用內部樣式。

三、 可以將外部腳本js文件置底。在body結束標簽之前加載,比影響整個靜態頁面的渲染工作。

使用CDN加載一些框架中的js或者css文件,CDN(content distribute network)的本質仍然是一個緩存

四、 Lazy Load懶加載的方法,用在對圖片和js文件的加載處理上。

五、 使用異步請求,在幕后進行數據的傳輸,不影響頁面的加載渲染過程。

六、 在js文件中減少使用“+”進行字符串的拼接。因為每次運行都會開辟新的內存并生成新的字符串變量,然后將拼接結果賦值給新變量。如果字符串不多的情況下可以使用“+”進行拼接。但是內容過多時,相比更為高效的做法是使用數組的 join方法,即將需要拼接的字符串放在數組中最后調用其 join方法得到結果。

七、 減少作用域鏈查找,將全局作用域中的變量通過在局部作用域中賦值給局部變量的方法,來減少變量向上查找的次數。

2.3 控制器的作用

控制器的作用主要有兩個:第一個,scope作用域對象初始化 ;第二個,給scope作用域對象通過一些方法或者函數增加行為 。

3.常見問題

問題: 網頁中影響性能的地方在哪里?

4.解決方案

網頁的生成過程,大致可以分成五步:

1. HTML代碼轉化成DOM

2. CSS代碼轉化成CSSOM(CSS Object Model)

3. 結合DOM和CSSOM,生成一棵渲染樹(包含每個節點的視覺信息)

4. 生成布局(layout),即將所有渲染樹的所有節點進行平面合成

5. 將布局繪制(paint)在屏幕上


以上這五步里面,第一步到第三步都非常快,耗時的是第四步和第五步。 "生成布局"(flow)和"繪制"(paint)這兩步,合稱為"渲染"(render)。重新渲染,就需要重新生成布局和重新繪制。前者叫做"重排"(reflow),后者叫做"重繪"(repaint)。重排和重繪會不斷觸發,這是不可避免的。但是,它們非常耗費資源,是導致網頁性能低下的根本原因。 提高網頁性能,就是要降低"重排"和"重繪"的頻率和成本,盡量少觸發重新渲染。

5.編碼實戰

本次小課堂理論講解較多,暫無demo!

6.擴展思考

問題: 在網站的性能中,前端網頁性能所占的比重?

7.參考文獻

參考一:web前端性能優化總結

參考二:網頁性能管理詳解

參考三:知乎:Web前端應該從哪些方面來優化網站?

參考四:百度百科

8.更多討論

討論點:大家對于網站性能的優化還有哪些認識,分享一下?

視頻鏈接:https://v.qq.com/x/page/l0504c6rp0r.html


如何進行網站的性能優化(前端部分)_騰訊視頻

PPT鏈接:https://ptteng.github.io/PPT/PPT/js-10-Website%20performance%20optimization.html#/

文本鏈接:http://www.jnshu.com/daily/23455

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,784評論 1 92
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,776評論 25 708
  • 網站優化離不開前后端的互相協作,但是對于前端工程師來說,在保證后端技術方案不變時,能不能只利用前端技術來優化網站呢...
    留七七閱讀 6,366評論 0 31
  • 文/恰恰天藍 小孩4歲多,上幼兒園中班,已經具有一定的自主意識和強烈地表達欲望,有次給小孩倒些開水喝時他卻說燙,要...
    恰恰天藍閱讀 221評論 4 1
  • 朱唇皓齒小謫仙,婀娜娉婷今十三。 青睞丹青頻惠顧,倦聞塵囂懶離園。 聰靈常獲師美譽,乖巧更招人喜歡。 雖是少年不更...
    倚窗聽雨a閱讀 219評論 2 4