浅谈web前端性能优化

本文涉及的产品
云解析 DNS,旗舰版 1个月
.cn 域名,1个 12个月
全局流量管理 GTM,标准版 1个月
简介: 浅谈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,减少了上传量。
相关文章
|
1月前
|
缓存 前端开发 JavaScript
利用代码分割优化前端性能:策略与实践
在现代Web开发中,代码分割是提升页面加载性能的有效手段。本文介绍代码分割的概念、重要性及其实现策略,包括动态导入、路由分割等方法,并探讨在React、Vue、Angular等前端框架中的具体应用。
|
1月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
60 3
|
1月前
|
前端开发 JavaScript
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
|
7天前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
34 3
|
29天前
|
前端开发 安全 UED
2024年前端性能优化新策略
2024年前端性能优化策略涵盖代码分割与环境变量管理。代码分割通过动态导入和按需加载CSS减少初始加载时间;环境变量管理则确保敏感信息安全,简化多环境配置。结合最新工具和技术,可大幅提升Web应用性能与用户体验。
|
23天前
|
缓存 监控 前端开发
探索前端性能优化:关键策略与代码实例
本文深入探讨前端性能优化的关键策略,结合实际代码示例,帮助开发者提升网页加载速度和用户体验,涵盖资源压缩、懒加载、缓存机制等技术。
|
27天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
35 6
|
26天前
|
搜索推荐 前端开发 定位技术
前端开发人员SEO优化技术方案
不同的搜索引擎提供了服务后台常见功能来优化网站搜索
48 2
|
1月前
|
数据采集 缓存 监控
如何优化前端框架的数据驱动方式以提高性能?
综上所述,通过多种手段的综合运用,可以有效地优化前端框架的数据驱动方式,提高应用的性能,为用户带来更好的体验。同时,随着技术的不断发展和进步,我们需要不断探索和创新,以找到更适合的优化方法和策略。
|
1月前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。