浅谈web前端性能优化

简介: 浅谈web前端性能优化

浅谈web前端性能优化


代码层面:

防抖和节流(resize,scroll,input)。

减少回流(重排)和重绘。

事件委托。

css 放 ,js 脚本放 最底部。

  • 由于用户浏览网页是先看再进行操作,所以先把css加载出来有利于客户的使用体验。

延迟JavaScript

defer属性告诉浏览器在 HTML 解析器解析完文档之后运行脚本,但在事件发生之前,DOMContentLoaded会被触发。

减少 DOM 操作。

按需加载

比如 React 中使用 React.lazyReact.Suspense ,通常需要与 webpack 中的 splitChunks 配合。

懒加载

  • 又由于客户会先浏览第一屏,所以可以先不加载第二屏和后面的。

预加载

  • 在做读书或者用户很可能点击之后的页面时,可以做预加载。
  • 顾名思义,就是在用户点击下一页之前,就预先请求下一页。
  • 这样用户可以很快看到之后的内容。
  • 但这样同时会浪费带宽。有利有弊

构建方面:

压缩代码文件

在 webpack 中使用 terser-webpack-plugin 压缩 Javascript 代码;使用 css-minimizer-webpack-plugin 压缩 CSS 代码;使用 html-webpack-plugin 压缩 html 代码。

服务器端使用gzip压缩

  • g-zip压缩算法,把下载过来的数据先进行压缩
  • 后台开启gzip,用户下载压缩包,浏览器自动解压
  • 文本文件的压缩率可达80%以上,因此HTML、CSS、JavaScript文件启用GZip压缩可达到较好的效果。但是压缩对服务器和浏览器产生一定的压力,在通信带宽良好,而服务器资源不足的情况下要权衡考虑。

开启 gzip 压缩,webpack 中使用 compression-webpack-plugin ,node 作为服务器也要开启,使用 compression

常用的第三方库使用 CDN 服务

在 webpack 中我们要配置 externals,将比如 React, Vue 这种包不打倒最终生成的文件中。而是采用 CDN 服务。

其它:

  • 使用 http2。因为解析速度快,头部压缩,多路复用,服务器推送静态资源。
  • 使用服务端渲染。
  • 图片压缩。
  • 使用 http 缓存,比如服务端的响应中添加 Cache-Control / Expires

DNS服务优化

  • 当我们输入url访问一个网页后,第一步会进行DNS查询,通过DNS得到IP地址。
  • 想让DNS查询更快,可以花钱购买一些更快的DNS服务,但没有必要。
  • 一般是配置hosts,自己把ip配置好。DNS就会读取系统hosts文件,查找其中是否有对应的ip。

http 连接复用

  • 当查询完了ip后,会给ip发送一个请求
  • 这个请求是http请求,本质是tcp连接
  • 一般需要请求html,css和js,这三个都需要tcp,所以可以用同一个tcp,这就是连接复用。
  • Keep-Alive 实现,让第一次发送请求建立的TCP连接不要中断,这样第二次发送请求时可以复用这个连接

SQL优化

  • 查询是用sql语句查询数据库,可以通过优化sql查询来减少时间。(打开开发者工具看waiting时间可以判断是前端慢还是后端慢)

提高server带宽

  • 拿到数据后会返回数据,下载时间=下载量/下载速度,提高服务器带宽就能加快下载速度(需要花钱购买)

优化CSS

  • CSS 是阻塞渲染的,这意味着浏览器必须先下载并处理所有CSS文件,然后才能绘制像素。 通过内联关键的 CSS,可以大大加快此过程。
  • 由于有时候CSS会写在JS中,所以这种方法并不可靠。

浏览器端使用缓存

  • CSS、JavaScript、Logo、图标这些静态资源文件更新的频率都比较低,而这些文件又几乎是每次HTTP请求都需要的,如果将这些文件缓存在浏览器中,可以极好地改善性能。(html不缓存)
  • 缓存是一种快速提高站点速度的方法。它减少了访问者的页面加载时间。我们可以告诉浏览器在特定的时间缓存文件。

我们可以使用以下 API 进行缓存:

  • Cache-Control
  • ETag
  • Last-Modified

此外还有弱缓存:把md5发给服务器,如果md5一致,就返回304,表示不需要下载,此时没有下载量。

减少Cookie传输

  • Cookie包含在每次请求和响应中,太大的Cookie会严重影响数据传输,因此哪些数据需要写入Cookie需要慎重考虑,尽量减少Cookie中传输的数据量

使用域名加速

  • 用户请求页面时,需要请求多个文件,html、css、js等。
  • 假如有1个html,10个css,20个js,那么就需要发送31个请求,如果31个一起发,可以节约时间。
  • 但是这样会消耗大量带宽,所以浏览器规定了每个域名同时最多只能10个。
  • 这样时间会加长,所以通过加域名的方式。
  • a域名专门请求html,b域名请求css,c域名请求js,这样就只需两次请求的时间, 加域名我们一般加的是 cdn域名。
  • 加了域名后dns时间也会增加,所以要进行权衡。
  • cookie-free:增加域名的第二个好多处,cookie只跟着主域名,css、js都无cookie,减少了上传量。
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
9天前
|
编解码 前端开发 JavaScript
构建高效响应式Web界面:现代前端框架的比较
【4月更文挑战第9天】在移动设备和多样屏幕尺寸盛行的时代,构建能够适应不同视口的响应式Web界面变得至关重要。本文深入探讨了几种流行的前端框架——Bootstrap、Foundation和Tailwind CSS,分析它们在创建响应式设计中的优势与局限。通过对比这些框架的栅格系统、组件库和定制化能力,开发者可以更好地理解如何选择合适的工具来优化前端开发流程,并最终实现高性能、跨平台兼容的用户界面。
|
10天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
11天前
|
编解码 前端开发 JavaScript
Web 前端开发中的最佳实践
本文将介绍 Web 前端开发中的最佳实践,包括代码组织、性能优化、响应式设计和用户体验等方面。通过遵循这些实践,开发人员可以提高开发效率,优化用户体验,并减少潜在的问题和错误。
|
1月前
|
网络协议 Shell 网络安全
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
实验目的1.编译安装httpd2.优化路径3.并将鲜花网站上传到web服务器为网页目录4.在客户机访问网站http://www.bdqn.com
163 0
|
2天前
|
存储 缓存 前端开发
前端如何利用indexDB进行数据优化
使用IndexedDB作为浏览器内置的客户端数据库,用于存储大量数据和实现离线支持。它能缓存常用数据,减少服务器请求,提高用户体验。IndexedDB支持数据索引、复杂查询及版本管理,允许离线操作并同步到服务器。但需熟悉其异步API,可借助Dexie.js、localForage等库简化使用。
|
3天前
|
缓存 负载均衡 数据库
优化后端性能:提升Web应用响应速度的关键策略
在当今数字化时代,Web应用的性能对于用户体验至关重要。本文探讨了如何通过优化后端架构和技术手段,提升Web应用的响应速度。从数据库优化、缓存机制到异步处理等多个方面进行了深入分析,并提出了一系列实用的优化策略,以帮助开发者更好地应对日益增长的用户访问量和复杂的业务需求。
9 1
|
4天前
|
前端开发 搜索推荐 数据安全/隐私保护
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
HTML标签详解 HTML5+CSS3+移动web 前端开发入门笔记(四)
14 1
|
4天前
|
前端开发 JavaScript vr&ar
前端新技术探索:WebAssembly、Web Components与WebVR/AR
【4月更文挑战第12天】WebAssembly、Web Components和WebVR/AR正重塑Web应用的未来。WebAssembly允许C/C++等语言在Web上高效运行,提供接近原生的性能,如游戏引擎。Web Components通过Custom Elements和Shadow DOM实现可复用的自定义UI组件,提升模块化开发。WebVR/AR(现WebXR)则让VR/AR体验无需额外应用,直接在浏览器中实现。掌握这些技术对前端开发者至关重要。
13 3
|
5天前
|
机器学习/深度学习 前端开发 算法
使用机器学习优化前端用户体验
在当今高度竞争的互联网市场中,用户体验是至关重要的。本文将探讨如何利用机器学习技术来优化前端用户体验,从而提高用户满意度和留存率。我们将介绍如何利用机器学习算法分析用户行为数据,优化网站性能和内容推荐,以及如何实时调整界面设计和交互方式,从而实现个性化、智能化的用户体验。
|
6天前
|
前端开发 算法 JavaScript
如何优化前端性能:探索图片压缩与延迟加载技术
本文深入探讨了前端性能优化中的关键问题:图片压缩与延迟加载技术。通过介绍图片压缩的原理和方法,并结合实例说明了如何有效减少图片大小、提升加载速度;同时,详细解析了延迟加载技术的实现原理及其在提高页面加载性能中的作用,为前端开发者提供了实用的优化方案。