前端性能优化

减少HTTP请求(CSS Sprites、内联图片和脚本、样式表合并)

只有10%~20%的最终用户响应时间花在了下载HTML文档商,其余80%~90%时间花在了下载页面的所有组件上。

CSS Sprites:

CSS Sprites也可以合并图片,但是更为灵活。CSS Sprites是将多个图片合并到一个图片中,CSS Sprites适用于任何支持背景图片的HTML标签中。通过使用CSS的background-position属性可以将元素放置到图片中期望的位置上面。

内联图片:

通过使用data:URL模式可以在Web页面包含图片但无需任何额外的HTTP请求。data:URL模式在1995年提议的,对它描述为:允许将小块数据内联为‘立即数’,数据就在URL自身中。其它类似的模式包括:ftp:、file:和mailto:。除此之外还有很多模式,smtp:、pop:、dns:等等。

合并脚本和样式表

将样式表放在顶部

将样式表放于文档底部会导致在浏览器中阻止内容逐步呈现。为了避免当样式变化时重绘页面的元素,浏览器会阻止内容的逐步呈现,也就出现了白屏 。白屏是对无样式内容闪烁的弥补,浏览器可以延迟呈现,知道所有的样式表都下载完成后。

将脚本放在底部

前面使用样式表的时候,页面逐步呈现会阻止,因此建议将样式表置于HEAD中,使用脚本时,脚本会阻止并行下载,脚本后面的内容,逐步呈现都被阻塞了,后面的组件下载都被阻塞了,将脚本放在页面越靠下的地方,意味着越多的内容能够逐步的呈现。

CSS的优化手段

由于在解析 CSS 选择器的时候是从右往左解析的,所以这种解析顺序决定了我们在写选择器的时候就可以有一些优化操作:

根据上面的代码,可以总结以下几点

1.尽量避免使用通配符 *,尽可能的只对用到的元素去匹配

2.少使用标签选择器,如果可以的话可以利用类来代替,例如上面的 1 和 2 的写法

3.对于嵌套较深的元素,在利用 CSS 匹配的时候尽可能的少嵌套,因为后代选择器的消耗是很高的。

4.对于 p.name 这种写法,如果只用一个 .name 就可以的话,那么就没必要写前面的 p,这样也可以减轻检索的消耗

JS 的优化手段

浏览器在遇到 script 标签的时候,会停止对 HTML 和 CSS 的解析,这是因为我们可以用 JS 修改 DOM,也可以修改样式,对于浏览器来说,它并不知道我们在 JS 里面做了什么操作,所以干脆就停止解析 HTML和 CSS,直接去下载执行 JS,省的会造成一些错误。

在浏览器遇到第一段 script 的时候,此时拿不到 div ,正是因为渲染 HTML 停止了,证明了 JS 可以阻塞 HTML 的解析

浏览器遇到第二段 script 的时候,此时已经解析完了 body 部分的 HTML 代码,所以可以拿到 div,但是因为 style 是在这个 script 后面执行的,所以此时拿到的 color 是默认颜色 rgb(0, 0, 0) ,也就是黑色。所以证明了 JS 可以阻塞 CSS 的解析。

最后一段,CSS 解析完了以后,就拿到了设置的颜色,红色,没有任何问题。

优化 JS 的建议

.删除不必要的注释和空格

我们尽量把操作 DOM 相关的 JS 文件放到 body 后面,这样不会阻塞 HTML 和 CSS 的解析,毕竟,最快解析出来 HTML 和 CSS,呈现出一个页面给用户,是最主要的,就算此时只是一个静态的页面。



©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343

推荐阅读更多精彩内容

  • 目录 一、总结一句话总结1、JavaScript和CSS是应该放在外部文件中呢还是把它们放在页面本身之内呢?2、为...
    Zal哥哥阅读 690评论 0 0
  • 什么是前端性能优化(what)? 从用户访问资源到资源完整的展现在用户面前的过程中,通过技术手段和优化策略,缩短每...
    我性本傲阅读 3,493评论 0 3
  • 你愿意为打开一个网页等待多长时间?我一秒也不愿意等。但是事实上大多数网站在响应速度方面都让人失望。现在越来越多的人...
    前端杨肖阅读 583评论 0 0
  • 日常工作和生活中,我们经常利用浏览器去打开一些URL来获取我们所需的资源,那么作为一个开发者或者性能测试工程师,如...
    七月鎏金阅读 703评论 0 0
  • 简介 前端优化的目的是什么 ? 从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能够给用户提供...
    JuanitaLee阅读 809评论 0 5