天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

從新浪微博的改版談網頁重構

  搞前端的同學也許都知道一個數字——4秒,有研究表明,如果一個網站沒有在4秒之內加載完成,用戶就會感到焦躁不愉快,并離開這個網站。網站的內容、搜索引擎優化、用戶體驗?哪個更重要呢?在速度面前,也許這些都相對更次要。所以提高網頁效率,是我們在新版微博的第一目標。從四個方面來淺談我們新版微博的優化。

  一、HTTP請求數的權衡

  1、為什么要關心http請求?

  當瀏覽器向Web服務器發出請求時,它向服務器傳遞了一個數據塊,也就是請求信息。在用戶打開一個頁面的初初,包括等待時間、請求時間、建立響應時間、渲染時間……,都是消耗在前端的。比如下載圖片、下載樣式表、JavaScript腳本、flash等文件。大家應該都經歷過那個“多圖殺貓”的時代,加載那樣一個網頁會花費大量的時間。減少這些資源文件的請求數將是提高網頁顯示效率的重點。

  假設用戶家的網速是1M/秒,那么他打開一個網頁時,如果網頁文件小于1M,理論上他可以在一秒之內打開網頁。下載網頁的快慢在顯示速度上占了很大比重,所以,網頁本身體積越小,瀏覽速度就會越快。這就需要產品、交互、設計,從最初就遵循盡量精簡的原則。

  現在,就揭開新版微博的面紗,看看微博3.0和新版微博的區別吧。

微博3.0截圖

新版微博截圖

  微博3.0是大家熟悉的兩欄結構,總寬為800px,有一級導航和二級導航、發布框、feed區、個人簡介區。新版微博是現在最流行的三欄式布局,總寬950px,除以前的內容一個都不少之外,還整合出了左側導航和右側各種引導和公告。所以從理論上講,雖然內容更豐富了,但新版微博著實比微博3.0的頁面體積大了很多。

  2、什么是bigpipe?

  網上有個例子舉得好:在飯館點菜吃的時候,如果點了四個菜,廚師沒有必要把四個菜一起炒好再上來。微博3.0就是這種把所有菜都炒好再上桌的網頁加載模式。所以用戶吃上菜的時候,已經是第5秒了。現在新版微博的bigpipe網頁加載模式,是炒好一個菜先一個菜,用戶可以先吃著,廚師再炒第二個菜。甚至可以幾個菜并發同時炒。所以用戶吃上第一口菜的時間可能是第1秒,比之前提前了很多。

bigpipe模式示意圖

  JS工程師把頁面分割成若干個小塊(pagelet),模塊彼此獨立,把html語言轉變為JS語言,再把CSS通過style的方式加載進這段代碼,而不需要用以往的頭部link css地址的方式取樣式。每個模塊有自己對應的html、CSS、JS,一旦開始運行模塊,就會尋找到對應的CSS,并顯示對應innerHTML內容插入到對應的html元素中,同時渲染出本模塊效果。比如執行到feed區域的id="pl_content_homeFeed"時,樣式表只調用了feed.css。

  3、為什么新版微博CSS的HTTP請求數不降反增?

  通過上面說的這種模式,css被全部link到頭部,是為了給后臺代碼提供出pagelet所需要的樣式列表。以前微博3.0頭部只link了3個CSS,新版微博首頁頭部卻需要link10多個css。雖然加載文件多了,新版微博CSS加載請求數高于v3,看似yslow降級了(這個數據已經不能說明任何問題了)。但實際上新版微博CSS沒有像以往一樣合并起來,而是用一個加載一個,CSS和JS被分配到不同流水線中,模塊的加載變成并行的,先執行完的模塊先顯示出來。所以新版微博CSS渲染的總時間并不超過V3 CSS渲染的總時間,速度反而快了很多,減少了視覺等待。

 

請求數

總大小

加載時間

V3 CSS

3 個請求

76.3 KB

8.53s

V4 CSS

24個請求

50.2KB

6.08s

  上面這張表格,來自yslow的分析。我們通過把頁面切成細小模塊寫樣式的做法,雖然請求數比以前大了8倍,但總大小上直降20K。

  將多個CSS合并的做法固然可以減少請求,但對上億用戶的微博頁面來說,完成合并也許會帶來5%速度的提升。但是如果按bigpipe模式,即使http請求數提高了,但是整體的速度也許是之前的50%。

  二、對CSS的優化處理

  1、提取公用模塊或公用元素,并反復調用

  如果用戶每次訪問微博首頁時,就重新下載讀取CSS文件。這就會造成給服務器帶來額外壓力且用戶重復讀取耗時。新版微博的做法是,把模塊分為全局級模塊和頁面級模塊,首頁是全站的核心,所有模塊都是重要且重復性高的,所以首頁的所有模塊都是全局級模塊。首頁所需要的CSS被整理成一個pl列表反饋給工程師,等待處理。而一些非公共的css模塊樣式被單獨寫在屬于本頁面的文件里,這樣就最大化的節省了文件大小及利用率。這么做還有一個好處,就是公共模塊樣式被調用過后,會在瀏覽器里留下緩存。調用最頻繁的模塊,反而樣式被最快的加載進來。

  舉個簡單的例子:

.clearfix:after{content: ".";display: block;height:0;
clear:both;visibility: hidden;}
.clearfix
{display: inline-block;}

it知識庫從新浪微博的改版談網頁重構,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 午夜影院c绿象 | 国产久久热99视频 | 日本人添下面的全过程 | 99精品国产福利在线观看 | 欧美巨大巨粗黑人性AAAAAA | 快播免费电影 | 日本美女色 | 国产成人啪精品视频免费网 | 披黑人猛躁10次高潮 | 亚洲 欧美 视频 手机在线 | 高清不卡伦理电影在线观看 | 91综合久久久久婷婷 | 嗯别插太快好深再深点 | 午夜伦伦电影理论片大片 | 久热久热精品在线观看 | 皮皮在线精品亚洲 | 精品日产1区2卡三卡麻豆 | 717影院理论午夜伦不卡久久 | 女人高潮特级毛片 | 亚洲精品成人 | 亚洲免费精品 | 被爽到叫呻呤视频免费视频 | 国产免费高清mv视频在线观看 | 美国兽皇zoo在线播放 | 国产在线精品亚洲二品区 | 日韩av无码在线直播 | 国产日韩欧美高清免费视频 | 67194成在线观看免费 | 伊人网综合在线观看 | 日本aa大片| 手机毛片在线观看 | 兔费看少妇性L交大片免费 偷偷要色偷偷 | 国产精品熟女人妻 | 一二三四在线播放免费观看中文版视频 | 99免费精品 | 末班车动漫无删减免费 | 动漫H片在线播放免费高清 动漫AV纯肉无码AV电影网 | 99er4久久视频精品首页 | 欧美日韩综合一区 | 人人碰国产免费线观看 | 主播蜜汁丝袜精品自拍 |