WEB前端开发常用的优化技巧汇总
减少HTTP请求次数或者减少请求数据的大小
页面中每发送一次HTTP请求,都需要完成请求+响应这个完整的HTTP事务,会消耗一些时间,也可能会导致HTTP链接通道的堵塞,为了提高页面加载速度和运行的性能,我们应该减少HTTP的请求次数和减少请求内容的大小(请求的内容越大,消耗的时间越长)
1、采用CSS雪碧图(CSS Sprit / CSS 图片精灵)技术,把一些小图合并在一张大图上,使用的时候通过背景图片定位,定位到具体的某一张小图上
.pubBg{
background:url('../img/sprit.png') no-repeat;
background-size:x y; /*和原图的大小保持一致*/
}
.box{
background-position:x y; /*通过背景定位,定位到具体的位置,展示不同的图片即可*/
}
...
<div class='pubBg box'></div>
2、真实项目中,我们最好把CSS或者JS文件进行合并压缩;尤其是在移动端开发的时候,如果CSS或者JS内容不是很多,我们可以采取内嵌式,以此减少HTTP请求的次数,加快页面加载速度;
1)CSS合并成一个,JS也最好合并成一个
2)首先同过一些工具(例如:webpack)把合并后的CSS或者JS压缩成 xxx.min.js,减少文件大小
3)服务器端开启资源文件的GZIP压缩
…
通过一些自动化工具完成CSS以及JS的合并压缩,或者再完成LESS转CSS,ES6转ES5等操作,我们把这种自动化构建模式,称之为前端“工程化”开发
3、采用图片懒加载技术,在页面开始加载的时候,不请求真实的图片地址,而是用默认图占位,当页面加载完成后,在根据相关的条件依次加载真实图片(减少页面首次加载HTTP请求的次数)
真实项目中,我们开始图片都不加载,页面首次加载完成,先把第一屏幕中可以看见的图片进行加载,随着页面滚动,在把下面区域中能够呈现出来的图片进行加载
根据图片懒加载技术,我们还可以扩充出,数据的懒加载
1)开始加载页面的时候,我们只把首屏或者前两屏的数据从服务器端进行请求(有些网站首屏数据是后台渲染好,整体返回给客户端呈现的)
2)当页面下拉,滚动到哪个区域,在把这个区域需要的数据进行请求(请求回来做数据绑定以及图片延迟加载等)
3)分页展示技术采用的也是数据的懒加载思想实现的:如果我们请求获取的数据是很多的数据,我们最好分批请求,开始只请求第一页的数据,当用户点击第二页(微博是下拉到一定距离后,再请求第二页数据…)的时候在请求第二页数据…
4、对于不经常更新的数据,最好采用浏览器的304缓存做处理(主要由服务器端处理)
例如:
第一次请求CSS和JS下来,浏览器会把请求的内容缓存起来,如果做了304处理,用户再次请求CSS和JS,直接从缓存中读取,不需要再去服务器获取了(减少了HTTP请求次数)
当用户强制刷新页面(CTRL+F5)或者当前缓存的CSS或者JS发生了变动,都会从新从服务器端拉取
…
对于客户端来讲,我们还可以基于localStorage来做一些本地存储,例如:第一次请求的数据或者不经常更新的CSS和JS,我们都可以把内容存储在本地,下一次页面加载,我们从本地中获取即可,我们设定一定的期限或者一些标识,可以控制在某个阶段重新从服务器获取
5、使用字体图标代替一些页面中的位图(图片),这样不仅做适配的时候方便,而且更加轻量级,而且减少了HTTP请求次数(类似于雪碧图)
6、如果当前页面中出现了AUDIO或者VIDEO标签,我们最好设置它们的preload=none:页面加载的时候,音视频资源不进行加载,播放的时候再开始加载(减少页面首次加载HTTP请求的次数)
preload=auto:页面首次加载的时候就把音视频资源进行加载了
preload=metadata:页面首次加载的时候只把音视频资源的头部信息进行加载
…
7、在客户端和服务器端进行数据通信的时候,我们尽量采用JSON格式进行数据传输
[优势]
1)JSON格式的数据,能够清晰明了的展示出数据结构,而且也方便我们获取和操作
2)相对于很早以前的XML格式传输,JSON格式的数据更加轻量级
3)客户端和服务器端都支持JSON格式数据的处理,处理起来非常的方便
真实项目中,并不是所有的数据都要基于JSON,我们尽可能这样做,但是对于某些特殊需求(例如:文件流的传输或者文档传输),使用JSON就不合适了
8、采用CDN加速
CDN:分布式(地域分布式)
关于编写代码时候的一些优化技巧
除了减少HTTP请求次数和大小可以优化性能,我们在编写代码的时候,也可以进行一些优化,让页面的性能有所提升(有些不好的代码编写习惯,会导致页面性能消耗太大,例如:内存泄漏)
1、在编写JS代码的时候,尽量减少对DOM的操作(VUE和REACT框架在这方面处理的非常不错)
在JS中操作DOM是一个非常消耗性能的事情,但是我们又不可避免的操作DOM,我们只能尽量减少对于它的操作
[操作DOM弊端]
1)DOM存在映射机制(JS中的DOM元素对象和页面中的DOM结构是存在映射机制的,一改则都改),这种映射机制,是浏览器按照W3C标准完成对JS语言的构建和DOM的构建(其实就是构建了一个监听机制),操作DOM是同时要修改两个地方,相对于一些其它的JS编程来说是消耗性能的
2)页面中的DOM结构改变或者样式改变,会触发浏览器的回流(浏览器会把DOM结构重新进行计算,这个操作很耗性能)和重绘(把一个元素的样式重新渲染)
…
2、编写代码的时候,更多的使用异步编程
同步编程会导致:上面东西完不成,下面任务也做不了,我们开发的时候,可以把某一个区域模块都设置为异步编程,这样只要模块之间没有必然的先后顺序,都可以独立进行加载,不会受到上面模块的堵塞影响(用的不多)
尤其是AJAX数据请求,我们一般都要使用异步编程,最好是基于promise设计模式进行管理(项目中经常使用 fetch、vue axios 等插件来进行AJAX请求处理,因为这些插件中就是基于promise设计模式对ajax进行的封装处理)
3、在真实项目中,我们尽可能避免一次性循环过多数据(因为循环操作是同步编程),尤其是要避免while导致的死循环操作
4、CSS选择器优化
1)尽量减少标签选择器的使用
2)尽可能少使用ID选择器,多使用样式类选择器(通用性强)
3)减少选择器前面的前缀,例如:.headerBox .nav .left a{ } (选择器是从右向左查找的)
…
5、避免使用CSS表达式
/*CSS表达式*/.box{ background-color:expression((new Date()).getHours()%2?'red':'blue')}
6、减少页面中的冗余代码,尽可能提高方法的重复使用率:“低耦合高内聚”
7、最好CSS放在HEAD中,JS放在BODY尾部,让页面加载的时候,先加载CSS,在加载JS(先呈现页面,在给用户提供操作)
8、JS中避免使用eval
1)性能消耗大
2)代码压缩后,容易出现代码执行错乱问题
9、JS中尽量减少闭包的使用
1)闭包会形成一个不销毁的栈内存,过多的栈内存累积会影响页面的性能
2)还会容易导致内存的泄漏
闭包也有自己的优势:保存和保护,我们只能尽量减少,但是无可避免
10、在做DOM事件绑定的时候,尽量避免一个个的事件绑定,而是采用性能更高的事件委托来实现
事件委托(事件代理)
把事件绑定给外层容器,当里面的后代元素相关行为被触发,外层容器绑定的方法也会被触发执行(冒泡传播机制导致),通过事件源是谁,我们做不同的操作即可
11、尽量使用CSS3动画代替JS动画,因为CSS3的动画或者变形都开启了硬件加速,性能比JS动画好
12、编写JS代码的时候尽可能使用设计模式来构建体系,方便后期的维护,也提高了扩充性等
13、CSS中减少对滤镜的使用,页面中也减少对于FLASH的使用
关于页面的SEO优化技巧
1、页面中杜绝出现死链接(404页面),而且对于用户输入一个错误页面,我们要引导到404提示页面中(服务器处理的)
2、避免浏览器中异常错误的抛出
尽可能避免代码出错
使用TRY CATCH做异常信息捕获
…
3、增加页面关键词优化
WEB前端开发常用的优化技巧汇总的更多相关文章
- web前端开发常用的10个高端CSS UI开源框架
web前端开发常用的10个高端CSS UI开源框架 随着人们对体验的极致追求,web页面设计也面临着新的挑战,不仅需要更人性化的设计理念,还需要设计出更酷炫的页面.作为web前端开发人员,运用开源 ...
- web前端开发常用组件
web前端开发常用组件 1. 对话框(dialog):jbox(适合对话框等其它功能).colorbox(也很强大,可以弥补jbox图片轮播的落点), 这二者基本能搞定所有对话框的情况 2. ...
- Web前端开发最佳实践系列文章汇总
Web前端开发最佳实践(1):前端开发概述 Web前端开发最佳实践(2):前端代码重构 Web前端开发最佳实践(3):前端代码和资源的压缩与合并 Web前端开发最佳实践(4):在页面中添加必要的met ...
- 【web开发】web前端开发常用技术总结归纳
技术选型规范规范 • Vue版本:2.x • 前端路由:vue-route • 异步请求:Axios • 全局状态管理:VueX • css预处理器:sass/less • h5项目移动端适配规则:使 ...
- web前端开发常用的几种图片格式及其使用规范
首先,在正式说图片格式之前,咱们先说一些额外的东西. 矢量图与位图 矢量图是通过组成图形的一些基本元素,如点.线.面,边框,填充色等信息通过计算的方式来显示图形的.一般来说矢量图表示的是几何图形,文件 ...
- web前端开发工具HBuilder使用技巧之快捷键
/*注:本教程针对HBuilder5.0.0,制作日期2014-12-31*/ 创建HTML结构: h 8 (敲h激活代码块列表,按8选择第8个项目,即HTML代码块,或者敲h t Enter) 中途 ...
- [总结]WEB前端开发常用的CSS/CSS3知识点
css3新单位vw.vh.vmin.vmax vh: 相对于视窗的高度, 视窗被均分为100单位的vh; vw: 相对于视窗的宽度, 视窗被均分为100单位的vw; vmax: 相对于视窗的宽度或高度 ...
- web前端开发常用工具
http://www.gbin1.com/technology/javautilities/20120806-resource-for-front-end-developer/ 冒泡样式 http:/ ...
- [转] Web前端开发工程师常用技术网站整理
1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...
随机推荐
- svn SSL 错误:Key usage violation in certificate has been detected
CentOS/RHEL yum 安装的 subversion 是 1.6.11 版本,连VisualSVN服务器时会有"Key usage violation"的错误 将subve ...
- 组装自己的tesla超级计算机
原文链接:blog.csdn.net/xqj198404/article/details/20016279 NVIDIA链接:http://www.nvidia.cn/object/tesla_bui ...
- Java学习笔记2——数据类型和转换
前提知识: 1字节=8bit:1bit以一个二极管表示,代表2个状态(0或者1):2bit代表22即4种状态(00,01,10,11),8bit即是28即256种状态,16bit即是65536种状态. ...
- 学了5天Arm,今天谈谈初学感受 (转)
一.初探 4月1日入手友善mini2440.先看了下板子,感觉没什么稀奇的,s3c2440总线上外挂SDRAM(对这个不是很感冒,之前搞过一个FPGA的SDRAM控制器),NOR . ...
- PhotoZoom控制面板简介说明
PhotoZoom是一款极其简单的图片无损放大工具,简单几步渲染出完美的放大照片,呈现无与伦比的画质效果.即可虽然简单,菜单和面板的功能很少,但却是设计师的必备神器,因为其简单易用性,它的软件菜单命令 ...
- hibernate一对多和多对一配置
public class Dept { private int deptId; private String deptName; // [一对多] 部门对应的多个员工 private Set<E ...
- noip 2010 引水入城 贪心 + 搜索
不难分析出如果有解则每个蓄水厂所能覆盖到的干旱城市一定是连续的.否则,中间那些没被覆盖的部分永远都不能被覆盖到. 当然,每个蓄水厂所覆盖的城市有可能不连续,不过既然有解,则一定都是连续的.我们可以开一 ...
- 【深入理解Java虚拟机】自动内存管理机制——垃圾回收机制
Java与C++之间有一堵有内存动态分配和垃圾收集技术所围成的"高墙",墙外面的人想进去,墙里面的人却想出来.C/C++程序员既拥有每一个对象的所有权,同时也担负着每一个对象生 ...
- Linux的环境中如何生成srw-rw---- 的文件权限?
文件属性 d 开头是: 目录文件. l 开头是: 符号链接(指向另一个文件,类似于瘟下的快捷方式). s 开头是: 套接字文件(sock). b 开头是: 块设备文件,二进制文件. c 开头是: 字符 ...
- 马上着手开发ios应用程序
https://developer.apple.com/library/ios/referencelibrary/GettingStarted/RoadMapiOSCh/chapters/Introd ...