应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

从微博的改版谈网页重构中的页面构建优化

  题记:搞互联网的同学也许都知道一个数字4秒,有研究表明,如果一个网站没有在4秒之内加载完成,用户就会感到焦躁不愉快,并离开这个网站(数据来自性能测试网站http:gtmetrix。com)。网站的内容、SEO优化、用户体验?哪个更重要呢?在速度面前,也许这些都相对更次要。所以提高网页效率,是我们在新版微博的第一目标。从四个方面来浅谈我们新版微博的优化。
  一、HTTP请求数的权衡
  1、为什么要关心http请求?
  当浏览器向Web服务器发出请求时,它向服务器传递了一个数据块,也就是请求信息。在用户打开一个页面的初初,包括等待时间、请求时间、建立响应时间、渲染时间,都是消耗在前端的。比如下载图片、下载样式表、JavaScript脚本、flash等文件。大家应该都经历过那个多图杀猫的时代,加载那样一个网页会花费大量的时间。减少这些资源文件的请求数将是提高网页显示效率的重点。
  假设用户家的网速是10Mbps,10Mbps1081。25MBs,那么他打开一个网页时,如果网页文件小于1。25MB,理论上他可以在一秒之内打开网页。下载网页的快慢在显示速度上占了很大比重,所以,网页本身体积越小,浏览速度就会越快。这就需要产品、交互、设计,从最初就遵循尽量精简的原则。
  现在,就揭开新版微博的面纱,看看微博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的方式加载进这段代码,而不需要用以往的头部linkcss地址的方式取样式。每个模块有自己对应的html、CSS、JS,一旦开始运行模块,就会寻找到对应的CSS,并显示对应innerHTML内容插入到对应的html元素中,同时渲染出本模块效果。比如执行到feed区域的idplcontenthomeFeed时,样式表只调用了feed。css。
  3、为什么新版微博CSS的HTTP请求数不降反增?
  通过上面说的这种模式,css被全部link到头部,是为了给后台代码提供出pagelet所需要的样式列表。以前微博3。0头部只link了3个CSS,新版微博首页头部却需要link10多个css。虽然加载文件多了,新版微博CSS加载请求数反而高于v3,看似yslow降级了(这个数据已经不能说明任何问题了)。但实际上新版微博CSS没有像以往一样合并起来,而是用一个加载一个,CSS和JS被分配到不同流水线中,模块的加载变成并行的,先执行完的模块先显示出来。所以新版微博CSS渲染的总时间并不超过V3CSS渲染的总时间,速度反而快了很多,减少了视觉等待。
  请求数总大小加载时间
  V3CSS3个请求76。3KB8。53s
  V4CSS24个请求50。2KB6。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:inlineblock;}
  这是一段全局代码,基本上每个页面都会用到这个类,我们就没必要把这句写在每个网页的CSS里面,只把它提取到base。css里,并方便进行皮肤管理。
  又比如,首页右侧栏有个可能感兴趣的活动类似的模块都是采用独立的div容器,这个段落的详细代码,如果写在公用CSS文件里,肯定就浪费了。
  2、尽可能少的使用cssimages
  能通过代码或字符实现的,就不用图片去解决。比如可能感兴趣的人展开气泡上下三角、返回顶部的箭头、更多后面的符号等。既减小CSS图片请求,又不会面临若干套皮肤升级困难的问题,仅通过对CSS的color、backgroud等属性的控制,就可以换色了。
  可以看看按这个做法之后明显的优势,下图来自yslow的statistics。微博3。0的cssimage总大小为970。1K,新版微博的cssimage总大小为693。9K,总量直降30。
  微博3。0statistics
  新版微博statistics
  3、尽量使用CSS3等新技术
  在新版微博里,我们制定了使用CSS3的原则,即非图片类的元素效果图,如圆角、阴影、渐变、半透等效果,可以通过样式控制,而无需切图的元素,在得到设计师认可后,不用图片,只做样式控制。满足高级浏览器的视觉,ie系列不能显示的,有原则的放弃。不仅为速度助力,还在放弃低级浏览器的大方向前进一步。
  4、鼠标滑上效果改用伪类实现
  在逐步放弃ie6的事情上,新版微博已经尽最大的努力做了。为了保证各浏览器的完全兼容,微博3。0以前我们曾经放弃让CSS实现鼠标滑上效果,而由JS控制。随着ie6使用率的日益降低,新版微博又一大革新就是重新使用伪类,仅通过CSS就实现的浏览器原生效果,不仅计算速度比计算一个JS快得多,也终于放弃了低端的ie6。
  举个评论页feed区的例子:
  CSS代码如下:
  每个单条feed在鼠标滑上时,都会显示举报和删除链接。这是交互设计出于对页面呈现内容的视觉舒适感所做的设计,我们通过对块元素直接写伪类,实现这个效果,不需要再通过JS了。ie6呢?就让它一直摆着去吧。
  三、对dom结构的优化处理
  1、bigpipe模式重构并优化垃圾代码
  v2从v1来,v3从v2来,在v3不堪重负的时候,新版微博的代码优化誓在必行了。所以我们并没有沿用之前的结构和CSS,而是直接推翻v3,重构新版微博。和JS工程师一起搭建的bigpipe模式,把页面分成细小的块,每一个模块对应一个CSS。代码写到最优,结构和样式完全分离,并杜绝内联调用的方式。下图示意了我们用模块配页面的最终效果,模块可以被细分为如此程度。模块拆的细,复用性被提高。
  2、尽量减少代码体积
  由于代码行数越少体积就越小,所以我们这次想办法减少网页代码的行数。相同或类似的模块,说服设计师把视觉规范统一。我们只通过对CSS补丁,覆盖原样式,并不改变页面的dom结构,直接降低重复代码率。举个例子,我的首页和我的profile页,同样是有feed区域的,区别是但一个有头像,一个没有头像。只需要一套feed。css代码,然后在我的profile页独立的页面级CSS中,打个去掉头像的补丁即可。
  3、首页中杜绝Table布局和iframe
  杜绝首页中出现Table布局。因为传统的table布局,是把内容全部加载完成后,才渲染样式,延迟效果严重。而iframe页面框架,是非语义的,即使为空也会有较大资源消耗,还会阻止页面的onload。
  四、对图片的优化处理
  1、图片的存储格式
  我们改变了v3的做法,把icon类小图片或背景类图片,由以前的gif存储尽可能多的转为png8的存储,这是个减小图片体积的好办法。Png8有gif的所有特点,但是相比gif,png8的优势是alpha透明和更优的压缩。png24全透明的图片,只给支持的浏览器使用,ie6在不影响视觉的前提下,改为gif呈现。我们还会利用的图片优化工具处理图片,保证效果但却降低文件大小。下图是主键类页面的images文件夹示意图,除必须独立的icon外,png类型的图片比重大得多。这在之前的V3并没有做到。
  2、csssprites
  在图片的拼合方面,我们是持之以恒这么做的。在v3里,我们把所有首页和profile页里出现的背景类图片都拼合到一张大图上,新版微博比之前高明在,我们把放置文件夹细分。假设我们把公用型放入common,页面类放入index,换肤类放入skin。把sprites拆分的更细,尽可能在加载首页时,减少图片请求数。
  3、大图片、小图片
  对于大背景图,我们的做法是不分割成小区块儿的。首先的因为,原本一个图片的请求数会变成多个。另外,大约80以上调用图片所消耗的时间,是用来检索缓存和确定链接是否有效的阻塞时间。也就是说,如果把一个大图片,切成若干小图片,虽然解决了图片的加载时间,却花费了更多的阻塞时间。
  4、在已知宽高的图片标签内,直接指定宽高。
  Feed区域里头像需求是5050的,所以后台直接吐出这个尺寸的图片。在已知宽高的情况的,我们在img标签中直接指定了height和width参数。因为如果浏览器没有找到这两个参数,它需要一边下载图片一边计算大小,首页有多少条feed就有多少个头像,浏览器需要不断地调整计算。当浏览器知道了height和width参数后,即使图片暂时无法显示,页面上也会预留空位,继续加载后面的内容。

神仙水有酒精吗不含酒精的神仙水sk2神仙水有酒精吗SK2神仙水没酒精,因为SK2神仙水中含有酵母发酵成分,因此会产生一定的发酵味道,类似于酒精味,但是神仙水中是不含有酒精的,酒精在护肤品中通常作为溶剂……中国式领导路在何方中国的科层组织有独特的儒家文化底蕴,企业家对于员工充满了改变他们命运的使命感,而在商海的摸索中他们又倾听到了市场的声音,幸运地找到了用家长领导力激活员工的办法。中国式管理……半夜腿抽筋喝芍甘木瓜汤腓肠肌痉挛俗称小腿抽筋,中医称其为足挛急,主要表现是,发作时疼痛剧烈,腿不能伸直,否则疼痛更剧烈,数分钟后可自动缓解,多发作于半夜,好发于中老年人,尤其是女性。现推荐一个治疗足……陈嘉庚读后感三篇陈嘉庚读后感(一)今天我怀着崇敬的心情,一遍又一遍的读了《陈嘉庚》这篇短文,心中思潮起伏,文中的陈嘉庚先天下之忧而忧,后天下之乐而乐的品质令我难以忘怀。这篇文章主要……性生活时间不能超过分钟吗啪啪生活从双方性兴奋开始到射精结束,一般持续时间大约515分钟。有人认为,每次过啪啪生活持续时间越长,越能获得性满足,这种看法并不科学,性生理研究表明,一次爱爱生活的时间持续得……诚信也是一种美我总是想有一块神奇的橡皮,能擦掉剧本上主人公丑陋的谎言;我总是想有一种叫诚信的诅咒,来诅咒所有虚伪的人。美丽有很多种,诚信,也是一种美。从《皇帝的新装》中的小男孩,到《曾……也无风雨也无晴山顶积满了雪,冬季上山看日出的人不多,今日只有你和我两个人,清晨的山间,朦朦胧胧地起着薄雾,霜气凝结在干秃的树枝上,聚成一层薄薄的冰,雪景多美啊!你戴着针织手套边走边向手中呵气……这一次我真的懂了坚持,是遇事要坚持,如果实在坚持不下来也就算了。这是我对坚持的理解,我本以为我很懂了,但是我在与父母旅游时,我看到了一只羽毛非常柔软,脖子那里的毛在阳光的照耀下显的有些不……伤心失眠句子说说心情你是让我失眠的最佳理由一、跟你在一起的日子。少吃饭不要紧少了一句晚安睡不着。二、哈佛大学毕业的医生韦尔近期发表呼吸法能使人在秒内进入睡眠状态呼吸法分为三步首先吸气秒再憋气秒最后再呼气秒次循环后……种治疗阳委早泄效果最好的方法生活中不经意会问怎样可以治疗早泄吗?早泄,俗称阳痿,听到这个简直就是男人的噩梦。对一个男人来说性功能是一大魅力,万一说一个男人不行简直在摧毁他的尊严和自尊,下面一起来了解一下4……种植水稻如何施肥种水稻什么时候需要施肥?水稻施肥用什么肥料好?种植水稻怎么样施肥效果好?以下中国三农网就作简单介绍,供网友们参考。一、重施底肥底肥不仅可以源源不断地供给水稻各个生育阶段对……花椒树怎么栽花椒树栽种的时候需选择春季4~5月份或9~10月份之间,将种子放置在温水中浸泡12个小时取出,用湿润的纸巾进行包裹,进行催芽处理,选择疏松以及透气的土质,将发芽的种子播种至土质……
人都是说谎和不忠实的1、牧师宣布,请大家回家把马可福音第十七章念一遍,下礼拜要讲那一章。下主日,大家都来了。牧师问:念过马可福音第十七章的人请举手。大家都举手,牧师笑着说:今天我的讲题乃是:人都是……问大家提高宝贝转化率最直接有效的方式Hello,我是星空!最近在研究问大家玩法,问大家主要有两种方式一种是在宝贝详情页的位置出现的私域的问大家,为什么说是私域呢?其实就是你宝贝自身的一个领域,进入你店铺之后……路灯晚饭后,我和往常一样行走在马路边,忽然听见呯的一声,路旁的路灯全部打开了,那一束束灯光,把将要来临的黑暗照亮了!每天晚上的7点,它们准点为大家服务!不管白天还是黑夜,它们……本性造句用本性造句大全151、人类依旧本性难移、依然残忍、暴力、有侵略性、贪心、喜好竞争,并且以这种天性构建了社会。152、要认出这个本性,你必须先走入歧途,你必须先深入世界的动荡,你必须先进……新华小记者活动组委会工作总结及工作计划总部领导:新华小记者沈阳活动组委会工作自2016年4月正式启动以来,得到了新华小记者全国组委会、辽宁频道、沈阳市各级有关部门、市属多家中小学及众多家长、会员的大力支持和高……石塑地板环保吗家居装修还可以使用PVC地板、复合地板、实木地板、强化地板装饰地面,现在又出了一种PVC石塑地板,采用天然石粉为主要原材料构成高密度、高纤维网状结构的坚实基层,表面覆以高分子之……吐槽刘翔和伦敦奥运的雷语段子1、刘翔行不行,问问孙海平;刘翔伤没伤,问问赞助商;伤势大不大,问问冬日娜!2、跨了十二年栏,刘翔会发现,最难跨过去的,不是自己,而是自己人。3、有人说刘翔明明不行……该如何确定楼梯扶手的高度室内楼梯扶手高度确定是件很重要的事,不仅要考虑到家里的老人,还要考虑小孩。那么该如何确定楼梯扶手的高度呢?下面和本站了解下吧。该如何确定楼梯扶手的高度1。从踏步前缘……牙龈肿痛怎么办儿童牙龈肿痛怎么办儿童过年总是不忌口,容易上火导致牙龈肿痛,那么儿童牙龈肿痛怎么办呢?下面养生之道网为您介绍儿童牙龈肿痛怎么办,看看吧。1、急性肿痛需药物治疗如果是急性牙龈炎,可考虑……清新新娘盘发发型韩式绝美新娘发型小清新新娘盘发发型简约风小清新新娘盘发发型,饱满有方向的凌乱感盘发,点缀几只逼真的蝴蝶结发饰,衬托出曼妙感。小清新新娘盘发发型阳光洒在新娘子的脸上,就好似仙女……淘宝营销策略免单返现本质是耍流氓店铺免单返现一直是促销的终极手段,竞争对手再牛逼,我直接免单,直接返现,尤其是双11、双12大促期间,几乎每个大牌都玩大量免单。我之前几年在上市企业做运营的时候,记得双1……精彩文章推荐奇闻!17位裸体模特儿拼成撞烂汽车德国男子跳冰面冰没破被反弹〔图〕操场翻新发现古桥或与皇城有关光学漩涡光束:照射下能轻易发现不同程度或方向的扭曲天文上首……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网