前端进阶(1)Web前端性能优化

前端进阶(1)Web前端性能优化前端进阶(1)Web前端性能优化Web前端性能优化,不仅能够改善站点的用户体验,并且能够节省相当的资源利用。下面将从1)服务器、2)html内容、3)css、4)javascript、5)图片等几方面介绍具体的优化操作。目录:1.服务器优化1.1.使用内容分发网络(CDN)1.2.服务器使用http2.0协议1.3.GZIP压缩1.4.使用浏览器缓存1.5…

大家好,又见面了,我是你们的朋友全栈君。

前端进阶(1)Web前端性能优化

Web前端性能优化, 不仅能够改善站点的用户体验,并且能够节省相当的资源利用。下面将从1)服务器、2)html内容、3)css、 4)javascript、 5)图片等几方面介绍具体的优化操作。

目录:

1. 服务器优化

1.1. 使用内容分发网络(CDN)

把网站内容分散到多个、处于不同地域位置的服务器上可以加快下载速度。

1.2. 服务器使用http2.0协议

Http2.0的优点

  1. 二进制分帧
  2. 首部压缩
  3. 流量控制
  4. 多路复用
  5. 请求优先级
  6. 服务器推送

e.g 使用nginx, 要求 1)v1.9.5以上, 2)使用https;

1.3. GZIP压缩

1.4. 使用浏览器缓存

CSS、javascript、logo、图标这些静态资源文件更新的频率都比较低,而这些文件又几乎是每次http请求都需要的,如果将这些文件缓存在浏览器中,可以极好的改善性能。

通过设置http头中的cache-controlexpires的属性,可设定浏览器缓存,减少网络请求次数。

1.5. 设置ETag

ETags(Entity tags,实体标签)是web服务器和浏览器用于判断浏览器缓存中的内容和服务器中的原始内容是否匹配的一种机制。

2. HTML内容优化

2.1. 减少HTTP请求数

这条策略是最重要最有效的,因为一个完整的请求要经过DNS寻址,与服务器建立连接,发送数据,等待服务器响应,接收数据这样一个消耗时间成本和资源成本的复杂的过程。 常见方法:

  1. 合并多个CSS文件和js文件, 并进行最小化处理。
  2. 利用CSS Sprites整合图像,
  3. 行内图片Base64编码,使用 data:URL scheme在实际的页面嵌入图像数据
  4. 合理设置HTTP缓存

2.2. 减少DNS查找

为了减少DNS的询次数,最好的解决方法就是在页面中减少不同的域名请求的机会。

2.3. 避免重定向 301/30x

如果重定向的话,就需要在访问过程中重复发起一连串的动作,会消耗很多时间,因此避免出现多次重定向地址或资源的访问。

2.4. 避免在html标签中写style属性

js,css 写到单独的文件中,便于浏览器缓存。

2.5. 异步加载组件,预加载组件 (ansyc, defer)

ansyc, defer不会阻塞浏览器的文档解析。

  1. ansyc用于异步加载
  2. 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选择符优化

  1. 浏览器对选择符的解析是从右往左进行的
  2. 按照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代码注意

  1. 减少作用域链查找(多用局部变量,少访问全局变量)
  2. 减少闭包的使用,避免内存泄漏
  3. 谨慎使用with
  4. 避免使用eval Function函数
  5. 字符串拼接, 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,降低每个站点的请求书,提高单个请求的响应时间。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151175.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL数据类型

    MySQL数据类型

    2021年6月13日
    110
  • 自学python 一个简单的股票工具,源代码分享[通俗易懂]

    自学python 一个简单的股票工具,源代码分享[通俗易懂]项目名称:股票工具想要的功能:1获取数据实时某支股票的‘买一量’‘卖一量’#获取数据2数据分析对’买一量’‘卖一量’的判断进入时候提醒2.1买一量,大于、小于多少时,提示买入卖出2.2卖一量,大于、小于多少时,提示买入卖出2.3涨幅计算行动效果图:后面是源代码:#设置fromurllibimportrequestimportr…

    2022年6月16日
    42
  • awk变量

    awk变量一、awk字段变量变量名属性$0当前记录$1~$n当前记录的第n个字段二、awk内置变量变量名属性FS输入字段分割符,默认是空格RS输入记录分割符,默认是换行符NR已经读处的记录数,就是行号,从1开始NF当前记录的字段个数,就…

    2022年7月27日
    6
  • 华为转移到ios传输中断_社保不转移 重新开户

    华为转移到ios传输中断_社保不转移 重新开户iPhone备份麻烦,大家都知道!到底有多麻烦呢?以小编的经验,大概是折腾一晚上都不一定能顺利完成吧。。。iPhone自带的备份工具iCloud,在有WiFi的情况下可以自动备份,但其不大的免费空间对于大家来说显然不够,需要花高价扩容。另外,如果备份的数据比较多,就会拉慢备份速度,严重影响手机的正常使用。而且,iCloud不够稳定,所以使用过程中很有可能造成数据的丢失!简直不能再糟糕!有…

    2022年9月17日
    2
  • mac电脑卸载软件_docker卸载镜像

    mac电脑卸载软件_docker卸载镜像  在Mac上卸载docker,首先要关闭docker软件,然后进入/usr/local/bin/目录,依次使用如下命令:##1)进入docker的安装目录cd/usr/local/bin/##2)删除与docker相关的文件夹sudorm-rfdocker*sudorm-rfcom.docker.*sudorm-rfhub-tool*sudorm-rfkube*sudorm-rfvpnkit*  如图(1)所示:图(1)完成删除

    2022年8月30日
    5
  • 推荐 33 个 IDEA 最牛配置,写代码太爽了

    来自:琦彦  blog.csdn.net/fly910905/article/details/77868300 1.设置maven 1.在File->setting…

    2021年6月22日
    130

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号