前端里面包含的内容是丰富的,它包括HTML,CSS以及JS和图片等各种各样的资源。因此前端优化是复杂的和必要的,接下来在文章中为大家介绍前端性能优化的方法。本文在github会进行更新。
优化的目的
优化的目的在于让页面加载的更快,对用户操作响应更及时,为用户带来更好的用户体验,对于开发者来说优化能够减少页面请求数,能够节省资源。
网络优化
减少 http 请求数,css,js, image 等文件压缩合并,合理设置 http 请求缓存。
样式放头部,脚本放底部。
使用 CDN。
按需加载,显示进度条或者 loading
css优化
避免使用 CSS 表达式
尽可能减少CSS选择器的层级
减少 TABLE 布局
移除空的样式
图片在加载前提前指定宽高或者脱离文档流,可避免加载后的重新计算导致的页面回流;
JS优化
减少闭包的使用。过多使用闭包会产生很多不销毁的内存,内存过多会导致内存溢出。
避免使用iframe, iframe 会嵌入其它页面,父页面渲染的时候,同时渲染子页面,渲染进度会变慢。
减少 dom 操作,减少页面重绘和重排。使用 css3 动画
尽可能使用事件委托。事件委托可以给动态元素绑定事件,而且基于事件委托实现,整体性能会比一个一个绑定事件高50%。
注意防抖和节流
图片优化:
不用图片,尽量用 css3 代替。 比如说要实现修饰效果,如半透明、边框、圆角、阴影、渐变等,在当前主流浏览器中都可以用 CSS 达成。
使用矢量图 SVG 替代位图。对于绝大多数图案、图标等,矢量图更小,且可缩放而无需生成多套图。现在主流浏览器都支持 SVG 了,所以可放心使用!
使用恰当的图片格式。我们常见的图片格式有 JPEG、GIF、PNG。基本上,内容图片多为照片之类的,适用于 JPEG。而修饰图片通常更适合用无损压缩的 PNG。GIF 基本上除了 GIF 动画外不要使用。且动画的话,也更建议用 video 元素和视频格式,或用 SVG 动画取代。
按照 HTTP 协议设置合理的缓存。
使用字体图标 webfont、CSS Sprites 等。
用 CSS 或 JavaScript 实现预加载。WebP 图片格式能给前端带来的优化。
WebP 支持无损、有损压缩,动态、静态图片,压缩比率优于 GIF、JPEG、JPEG2000、PG 等格式,非常适合用于网络等图片传输。
图片懒加载与预加载
图片懒加载的原理就是暂时不设置图片的 src 属性,而是将图片的 url 隐藏起来,比如先写在 data-src 里面,等某些事件触发的时候(比如滚动到底部,点击加载图片)再将图片真实的 url 放进 src 属性里面,从而实现图片的延迟加载
图片预加载,是指在一些需要展示大量图片的网站,实现图片的提前加载。从而提升用户体验。常用的方式有两种,一种是隐藏在 css 的 background 的 url 属性里面,一种是通过 javascript 的 Image 对象设置实例对象的 src 属性实现图片的预加载。相关代码如下:
为什么要将图片转为base64格式
图片的 base64 编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址;
提升性能: 网页上的每一个图片,都是需要消耗一个 http 请求下载而来的, 图片的下载始终都要向服务器发出请求,要是图片的下载不用向服务器发出请求,base64可以随着 HTML 的下载同时下载到本地.减少https请求。
加密: 让用户一眼看不出图片内容 , 只能看到编码。
方便引用: 在多个文件同时使用某些图片时, 可以把图片转为base64格式的文件, 把样式放在全局中, 比如common.css, 以后在用的时候就可以直接加类名, 二不需要多层找文件路径, 会提升效率
相关文章