前端进阶(1)Web前端性能优化
Web前端性能优化, 不仅能够改善站点的用户体验,并且能够节省相当的资源利用。下面将从1)服务器、2)html内容、3)css、 4)javascript、 5)图片等几方面介绍具体的优化操作。
目录:
1. 服务器优化
1.1. 使用内容分发网络(CDN)
把网站内容分散到多个、处于不同地域位置的服务器上可以加快下载速度。
1.2. 服务器使用http2.0协议
Http2.0的优点
- 二进制分帧
- 首部压缩
- 流量控制
- 多路复用
- 请求优先级
- 服务器推送
e.g 使用nginx, 要求 1)v1.9.5以上, 2)使用https;
1.3. GZIP压缩
1.4. 使用浏览器缓存
CSS、javascript、logo、图标这些静态资源文件更新的频率都比较低,而这些文件又几乎是每次http请求都需要的,如果将这些文件缓存在浏览器中,可以极好的改善性能。
通过设置http头中的cache-control和expires的属性,可设定浏览器缓存,减少网络请求次数。
1.5. 设置ETag
ETags(Entity tags,实体标签)是web服务器和浏览器用于判断浏览器缓存中的内容和服务器中的原始内容是否匹配的一种机制。
2. HTML内容优化
2.1. 减少HTTP请求数
这条策略是最重要最有效的,因为一个完整的请求要经过DNS寻址,与服务器建立连接,发送数据,等待服务器响应,接收数据这样一个消耗时间成本和资源成本的复杂的过程。 常见方法:
- 合并多个CSS文件和js文件, 并进行最小化处理。
- 利用CSS Sprites整合图像,
- 行内图片Base64编码,使用 data:URL scheme在实际的页面嵌入图像数据
- 合理设置HTTP缓存
2.2. 减少DNS查找
为了减少DNS的询次数,最好的解决方法就是在页面中减少不同的域名请求的机会。
2.3. 避免重定向 301/30x
如果重定向的话,就需要在访问过程中重复发起一连串的动作,会消耗很多时间,因此避免出现多次重定向地址或资源的访问。
2.4. 避免在html标签中写style属性
js,css 写到单独的文件中,便于浏览器缓存。
2.5. 异步加载组件,预加载组件 (ansyc, defer)
ansyc, defer不会阻塞浏览器的文档解析。
- ansyc用于异步加载
- defer用于预加载
2.6. 延迟、分页加载图片
对于图片而言,在页面刚加载的时候可以只加载第一屏,当用户继续往后滚屏的时候才加载后续的图片。这样一来,假如用户只对第一屏的内容感兴趣时,那剩余的图片请求就都节省了。
2.7. 减少DOM元素数量
页面中存在大量DOM元素,会导致javascript遍历DOM的效率变慢。
2.8. 最小化iframe的数量
iframes 提供了一个简单的方式把一个网站的内容嵌入到另一个网站中。但其创建速度比其他包括JavaScript和CSS的DOM元素的创建慢了1-2个数量级。
2.9. 避免404
HTTP请求时间消耗是很大的,因此使用HTTP请求来获得一个没有用处的响应(例如404没有找到页面)是完全没有必要的,它只会降低用户体验而不会有一点好处。
2.10. 对Ajax请求使用GET方法
2.11. 避免空的图像src
3. CSS优化
3.1. 将CSS代码放在HTML页面的顶部
3.2. 合并、压缩CSS
3.3. CSS选择符优化
- 浏览器对选择符的解析是从右往左进行的
- 按照ID查询效率最高
3.4. 避免使用CSS表达式
3.5. 使用来代替@import
3.6. 避免使用Filters
4. javascript优化
4.1. 将JavaScript脚本放在页面的底部
4.2. 将JavaScript和CSS作为外部文件来引用
在实际应用中使用外部文件可以提高页面速度,因为JavaScript和CSS文件都能在浏览器中产生缓存。
4.3. 合并、压缩JavaScript
4.4. 删除无用、重复的脚本
4.5. 最小化DOM的访问
使用JavaScript访问DOM元素比较慢
4.6. 开发智能的事件处理程序
4.7. javascript代码注意
- 减少作用域链查找(多用局部变量,少访问全局变量)
- 减少闭包的使用,避免内存泄漏
- 谨慎使用with
- 避免使用eval Function函数
- 字符串拼接, Javascript中使用”+” 号来拼接字符串效率是比较低,建议使用数组的 join方法
5. 图像优化
5.1. 优化图片大小
5.2. 通过CSS Sprites优化图片
5.3. 不要在HTML中使用缩放图片
5.4. favicon.ico要小而且可缓存
6. 其他
6.1. 减小Cookie大小,尽量不使用cookie
cookie包含在每次请求和响应中,太大的cookie会严重影响数据传输
6.2. 负载均衡
负载均衡load balancer,降低每个站点的请求书,提高单个请求的响应时间。
前端进阶(1)Web前端性能优化的更多相关文章
- 【读书笔记】读《高性能网站建设指南》及《高性能网站建设进阶指南:Web开发者性能优化最佳实践》
这两本书就一块儿搞了,大多数已经理解,简单做个标记.主要对自己不太了解的地方,做一些记录. 一.读<高性能网站建设指南> 0> 黄金性能法则:只有10%~20%的最终用户响应时间 ...
- jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com) - Web前端学习之路
Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...
- 想要入行web前端要知道web前端的的基本工作职责
入一行,要先知一行 ”:我们来看看web前端开发职位 无论什么门派都要做到的一些基本工作职责 首先,你必须是一个合格的“页面仔”,这个叫法不好听,但很生动: 我们都知道,所有呈现的内容都是基于HTML ...
- 隔壁老主精讲web页面性能优化。
首先说一下为什么要进行web页面性能优化,在同样的网络环境下,两个同样能满足你的需求的网站,一个“Biu”的一下就加载出来了,一个卡--卡--卡--卡--卡--才出来,你会选择哪个?研究表明:用户最满 ...
- Web页面性能优化(YSlow)
YSlow(解析为Why Slow)是雅虎基于网站优化规则推出的工具,帮助你分析并优化网站性能.旧版Yslow 有13条规则,新版Yslow有23项规则,YSlow会根据这些规则分析你的网站,并给出评 ...
- web开发者性能优化工具(一)
web开发者性能优化工具 1 数据包嗅探器(在性能优化时,查看页面(包括页面中全部资源)的加载过程) HttpWatch (http://www.httpwatch.com/) 把网络流量用图形的 ...
- 如何合理优化WEB前端 高效提升WEB前端性能
对前端开发工程师来说,前端性能优化的重要性是不言而喻的,最为大家所知的是YSLOW的23条优化规则,在我的理解中,性能优化不纯粹是指用户访问网站的速度,也包括开发的效率,这里我总结下我理解中的WEB前 ...
- 安全开发运维必备,如何进行Nginx代理Web服务器性能优化与安全加固配置,看这篇指南就够了
本章目录 1.引言 1.1 目的 1.2 目标范围 1.3 读者对象 2.参考说明 2.1 帮助参考 2.2 参数说明 3.3 模块说明 3.服务优化 3.1 系统内核 3.2 编译优化 3.3 性能 ...
- web页面性能优化
web前端页面性能优化 网站的划分一般为二:前端和后台.我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为文章发表评论等等.而前端呢? 其实应该是属于功能的表现.并且影响用户访问 ...
- WEB开发性能优化--核心定义介绍篇(1)
推荐理由 随着 互联网的蓬勃发展,并且伴随着产品功能的越来越复杂,对于技术人员来说最大的挑战就是如何在保证业务快速发展的同时,也可保证不断复杂的业务对用户体验的影响,其中对用户来说最重要的体验指标是如 ...
随机推荐
- 微信小程序:将yyyy-mm-dd格式的日期转换成yyyy-mm-dd hh:mm:ss格式的日期
代码如下: changeDate1(e) { console.log(e); var date = new Date(e.detail.value); console.log(date); const ...
- Vue3.0+Electron聊天室|electron跨平台仿QQ客户端|vue3.x聊天应用
基于vue3+electron11跨端仿制QQ桌面应用实战Vue3ElectronQchat. 使用vue3+electron+vuex4+ant-design-vue+v3scroll+v3laye ...
- 上百本电子书(Java/Hadoop/Spark/Linux/机器学习/)免费分享 百度云持续更新
分享一下自己整理的超多电子书, 其中包括:Java,Hadoop,Spark,Linux,Hbase,Hive,机器学习,区块链 目录如下: 1 Java 基础 2 Java 虚拟机 3 Java 并 ...
- 数据结构-PHP 线段树的实现
转: 数据结构-PHP 线段树的实现 1.线段树介绍 线段树是基于区间的统计查询,线段树是一种 二叉搜索树,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点.使用线段树可以快速的查 ...
- MATLAB中FFT_HDL_Optimized模块定点(IEEE754单精度float格式)二进制与十进制转换实现
早些时间段,做了Matlab中FFT_HDL_Optimzed模块FFT HDL代码仿真,并与Xilinx Vivado自带的xfft IP进行单精度浮点比较(后面随笔叙述).因为FFT_HDL_Op ...
- 剑指 Offer 17. 打印从1到最大的n位数
剑指 Offer 17. 打印从1到最大的n位数 Offer 17 题目解析: 暴力解法 package com.walegarrett.offer; /** * @Author WaleGarret ...
- 【Azure 云服务】Azure Cloud Service在发布新部署后遇见不能RDP(远程连接)到实例时如何处理?
Azure 云服务是PaaS 的一个示例. 与 Azure 应用服务一样,此技术设计用于支持可缩放.可靠且运营成本低廉的应用程序. 同样,应用服务托管在虚拟机 (VM) 上,Azure 云服务也是如此 ...
- [UWP] 模仿哔哩哔哩的一键三连
1. 一键三连 什么是一键三连? 哔哩哔哩弹幕网中用户可以通过长按点赞键同时完成点赞.投币.收藏对UP主表示支持,后UP主多用"一键三连"向视频浏览者请求对其作品同时进行点赞.投币 ...
- 从一个想法看 FreeBSD 是商业化还是学院派
在某知名计算机网络论坛上我看到一个帖子,说自己想根据 FreeBSD 做一个移动的终端操作系统,就像安卓,苹果的 IOS 一样的. 逆向思维当初开发安卓的时候不可能没有考虑过 FreeBSD,因为无论 ...
- LNMP配置——安装Nginx
一.下载 #cd /usr/local/src/ #wget http://nginx.org/download/nginx-1.16.1.tar.gz 二.解压 # tar zxf nginx-1. ...