首发于 网站建设及技术分享
网站性能优化 —— HTTP/HTML/CSS/JS

网站性能优化 —— HTTP/HTML/CSS/JS

12.28-2017更新 //部分说明及代码示例修改


往期分享待整理上传...

每个月都会让部门下面的小伙伴们进行一次月度个人分享。作为领导又是发起人,所以理所当然的,分享会自然是当仁不让的去开启每一场的第一把火。不过最近总觉得就单单在群分享文档里放着,还是有点浪费似的不甘心,就奉上职业道场,大家有用观摩下。

由于做产品前是曾经也位光荣的web前端设计师(虽然还有其他称呼...),所以你懂得。文档偏实用性,深度原理诸位可自行查阅,还是非常好找的,本此分享虽然算不上精炼,但好歹也是常用型的资料,多是以往收集以及网上新进的资源整理归档,有些内容大家可能见过,有些却是新鲜的哈,但声明一点的是只是给内部定制的分享,注重实用性,部分内容不会那么全也没打算作细分指南。过了这一关的朋友们自然可以跳过,或者可以瞄几眼看看。


————————————————————————————————————————


01、《高性能网站建设指南》

01.1 本书14条精湛的优化技巧,作为一个能自称“前端工程师”的角色,你,必需拥有。

⚠️ 有点长,单独立文章说明,晚点会上传笔记或我的「读书脑图」专栏中查阅。



02、页面优化



02.1 设计实现层面 - 简化页面

尽量精简业务展示数量,减少页面、代码、图片、文章视频… (减少资源的使用)



02.2 合理设置 HTTP缓存

尽可能的让资源能够在缓存中待得更久



02.3 资源合并与压缩

外部脚本、样式 的文件进行合并:CSS、 JS、IMG、视频 … 资源压缩;



02.4 CSS Sprites

合并 CSS图片(定位显示图片位置),减少请求数



02.5 Inline Images

使用 data: URL scheme的方式将图片嵌入到页面或 CSS中



02.6 懒加载

使用没浏览过的资源?懒得加载呗。



02.7 需要加载的时候加载

在一般情况下并不加载信息内容,如不点击视频、不点击按钮的弹窗、… 等触发事件不加载。



02.8 将外部脚本置底

一般将js置底到。

注意: 如部分JS如果在body没载入完前,会会影响页面体验,就得放head里面,这种情况通常出现在body内容过载或网速很慢的情况下。(但目前通常会用懒加载/loading来处理这类体验,淘宝JD等就如此,所以也不太建议放入head,此条仅作为警示。注意)


02.9 将 CSS放在 head中

如放入body中,则还未下载和解析到 CSS,就已经开始渲染页面了,主次分明些好。



02.10 异步请求 Callback

将一些行为样式提取出来,慢慢的加载信息的内容。



02.11 减少不必要的 HTTP跳转

注:链接以 ’/‘结尾,有些服务器很可能隐藏 301跳转,增加多余请求。



02.10 避免重复的资源请求

疏忽或页面由多个模块拼接而成,每个模块中请求了同样的资源。习惯性养成合理搭建公共资源库。



02.13 其它



03、Javascript


03.1 DOM 最耗性能的一类操作

HTML收集器,返回的是一个数组内容信息,减少浏览器的repaint和reflow。



03.2 慎用 with

with(obj){ p = 1}; 实际上修改了代码块中的执行环境。



03.3 避免使用 eval和 Function

涉及的安全性极差不说,旧的浏览器性能呈倍数下跌,效率低等等,不推荐。



03.4 减少作用域链查找

这方面涉及到一些内容的相关问题,不过可以来 [点击这个链接]。



03.5 数据访问
数据访问提高性能




03.6 字符串拼接

"+" 号来拼接字符串效率是比较低,使用数组的 join方法



04、CSS选择符


优先1: 匹配唯一该名字的ID元素



优先2: 类选择符,匹配所有类属性包含该名字的元素



优先3: 类型选择符,应用于指定元素类型的所有元素



优先4: 相邻兄弟元素选择符,即h1元素的同级且ID为toc的元素(该属性IE6不支持)



优先5: 子元素选择符,匹配父元素ID为toc的所有li元素(该属性IE6不支持)



优先6: 后代选择符,当第2个选择符是第1个选择符的后代(子,子孙等)时,后代选择符规则会进行匹配



优先7: 通配选择符,匹配文档中的每一个元素



优先8: 属性选择符,根据元素的属性是否存在或其属性值进行匹配,该规则匹配href属性值等于#index的元素,该选择符有4个变体。



优先9: 伪类和伪元素选择符



其它说明
CSS选择符是从右到左匹配的

图画的粗,理还是不粗的哈,举个栗子:

惯性思维的你会想,读取顺序是从右向左才对吧?

实际:NO!,是先找到 span标签 然后再找到 p标签,最后才找到.gloves的。

so,,,关于其它标签哪怕CSS3选择器的一些使用规律,相信也会又些头绪了吧。


CSS选择符优化

顺便花了点时间梳理了下「CSS选择符减少性能损耗的技巧」。以表格的形式画了出来。这样会更清晰些;

CSS选择符减少性能损耗技巧


可重复性

例如:OOCSS(一种书写方法)关于这块,有很多网友说人家是框架。。。不过个人感觉它不是框架哈,更像是一种方法。想学精的同学可以去 [点击看看这个]

顺便附上一个早年弄的笔记,上面的例子未必准确,算是无限简化阉割版,只适合我个人用用,不完全,等空了再补上哈,不过给底子弱的看看还是可以的。

OOCSS(Object Oriented CSS)

其它方法市面上还是有很多的,这只是个栗子哈。


页面引入CSS注意事项

少用:


链接式/<link>

增加:



05、HTML(超文本标记语言)


05.1 <!DOCTYPE> 声明
必须HTML 第一行,HTML 4.01 中有三种声明


HTML 4.01 Strict ————————

该 DTD 包含 HTML 所有的 元素 和 属性,不过 展示性的 和 弃用的元素 是不包括的(比如 font不包括)。不允许框架集(Framesets)。



HTML 4.01 Transitional ————————

该 DTD 包含 HTML 所有 元素 和 属性,包括展示性的和弃用的元素(比如 font)。也不允许框架集(Framesets)。



HTML 4.01 Frameset ————————

该 DTD 等同于 HTML 4.01 Transitional,但不过这个是 允许框架集内容的。



HTML 5 ————————



【注意】————————

XHTML 2.0已被放弃、非特殊情况XHTML 1.0 可以不用了


05.2 Head





页面标签图标/shortcut icon

样式/stylesheet




在 HTML 中播放视频的方法有很多种。


HTML5 提供了播放音频文件的标准。










—————— THANKS ——————

玻璃钢生产厂家嘉兴玻璃钢座椅哪家好盘锦玻璃钢坐凳定制丹东玻璃钢装饰造型厂丽水玻璃钢花箱厂江西玻璃钢装饰工程定制普洱玻璃钢动物雕塑加工济南玻璃钢产品多少钱贵港玻璃钢前台厂家临汾玻璃钢装饰厂家泰安玻璃钢外壳多少钱珠海玻璃钢树池坐凳制作天津玻璃钢景观雕塑湖南玻璃钢餐桌椅制造烟台玻璃钢餐桌椅公司抚州玻璃钢产品价格广元商业美陈定做鹰潭玻璃钢机械外壳厂家直销锦州玻璃钢树池坐凳公司安阳玻璃钢装饰广州玻璃钢装饰批发深圳玻璃钢花瓶东营玻璃钢制品制造山西玻璃钢医疗外壳制作兰州玻璃钢休闲椅厂白城玻璃钢种植池厂家直销吕梁玻璃钢装饰工程价格潮州玻璃钢花瓶加工延安玻璃钢花盆加工河源玻璃钢装饰造型多少钱宿州玻璃钢休闲椅加工歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化