面试前端性能优化八股文十问十答第一期

面试前端性能优化八股文十问十答第一期

作者:程序员小白条,个人博客

相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!

⭐点赞⭐收藏⭐不迷路!⭐

1)CDN的概念

CDN(Content Delivery Network,内容分发网络)是一种分布式的网络架构,旨在提高网站内容传输的效率和性能。它通过将内容分发到全球各地的多个节点,使用户能够从距离更近的服务器获取所需的内容,从而加快内容加载速度,减少网络延迟。

2)CDN的作用

CDN 的主要作用包括:

  • 加速内容传输:通过将内容分发到靠近用户的边缘节点,减少数据传输距离和网络拥塞,加速内容的加载速度。
  • 提高网站性能:由于用户可以从就近的服务器获取内容,网站响应时间更短,从而提高了整体网站性能和用户体验。
  • 减轻源服务器压力:CDN 可以缓存静态内容并将其分发到边缘节点,从而减轻了源服务器的负载压力,提高了网站的稳定性和可靠性。
  • 提高容错能力:由于 CDN 的分布式特性,即使某个节点发生故障,仍然可以从其他节点获取内容,提高了网站的容错能力和可用性。
  • 节省带宽成本:CDN 可以通过智能路由和缓存机制来节省带宽成本,降低了网络传输费用。

3)CDN的原理

CDN 的工作原理通常包括以下几个步骤:

  • 内容缓存和分发:CDN 提供商在全球范围内部署了大量的缓存服务器(也称为边缘节点或 PoP 点),这些服务器位于各个地理位置的网络边缘。当用户请求访问某个网站时,CDN 会将网站的静态内容(如图片、视频、样式表等)缓存在距用户最近的边缘节点上。
  • 智能路由:当用户请求访问网站内容时,CDN 会通过智能路由技术将用户的请求引导到距离最近的边缘节点,从而减少数据传输的延迟和网络拥塞。
  • 内容传输:边缘节点在接收到用户请求后,会根据请求的内容是否存在于缓存中来进行相应的处理。如果请求的内容已经缓存,则直接从缓存中返回给用户;如果内容未缓存,则边缘节点会向源服务器请求内容,并将内容缓存到本地,然后再返回给用户。
  • 缓存更新:CDN 会定期检查源服务器上的内容是否发生了变化,如果发生了变化,则会更新缓存中的内容,以确保用户获取的是最新的内容。

通过以上方式,CDN 可以实现内容的快速分发和高效传输,从而提高了网站的性能和用户体验。

4)CDN的使用场景

CDN 的使用场景广泛,特别适用于以下情况:

  • 全球性网站:对于全球性的网站,通过将内容分发到世界各地的 CDN 节点,可以显著提高用户在不同地理位置的访问速度,降低网络延迟。
  • 大流量事件:在需要处理突发大流量的事件时,如热门新闻、大型活动直播等,CDN 可以有效分担源服务器的压力,保障网站的稳定性和可用性。
  • 静态资源分发:CDN 主要用于分发静态内容,如图片、样式表、脚本等,可以加速这些静态资源的加载速度,提高网站性能。
  • 视频和流媒体服务:对于需要提供视频和流媒体服务的网站,CDN 可以在全球范围内分发视频内容,提高播放的流畅性和观看体验。
  • 移动应用加速:移动应用中的静态资源和数据可以通过 CDN 分发,提高移动应用的加载速度和响应时间。

5)懒加载的概念

懒加载是一种延迟加载的策略,它指的是在页面初始加载时,并不加载所有的资源,而是只加载用户当前可见区域的资源。懒加载可以应用于图片、脚本、样式表等资源,以提高页面加载性能和用户体验。

6)懒加载的特点

懒加载具有以下特点:

  • 节省带宽和资源:通过延迟加载不可见区域的资源,可以减少初始页面加载时需要下载的资源数量,从而节省带宽和加快页面加载速度。
  • 优化用户体验:懒加载可以使页面在用户视线范围内更快地呈现出来,提高了用户对页面加载速度的感知,从而优化了用户体验。
  • 减轻服务器压力:延迟加载可以减轻服务器在页面初始加载时的压力,特别是在高并发的情况下,可以有效降低服务器的负载。
  • 适用于长页面:懒加载特别适用于长页面,因为用户可能并不会立即滚动到页面底部,延迟加载可以使页面加载更加高效。
  • 支持移动端优化:对于移动端设备,懒加载也有助于减少数据传输量和加速页面加载,对移动网络速度较慢的情况下尤为重要。

7)懒加载的实现原理

懒加载的实现原理通常涉及以下步骤:

  1. 识别加载时机:确定何时加载延迟加载资源。通常是当用户滚动页面或者其他事件触发时,检测到元素进入了可视区域。
  2. 加载资源:一旦确定了加载时机,就开始加载延迟加载资源,这可以通过异步加载资源的方式来实现,比如 JavaScript 动态创建 <script><link> 标签,或者使用 AJAX 请求数据。
  3. 替换占位符:在资源加载完成之前,可以使用占位符(比如 loading 动画或者占位图片)来暂时代替延迟加载的内容,以确保页面布局不会因为资源加载延迟而发生错乱。
  4. 触发加载:根据具体的实现方式,可能需要监听滚动事件或者其他用户操作,以触发加载延迟加载资源的逻辑。

8)懒加载与预加载的区别

懒加载和预加载是两种不同的资源加载策略:

  • 懒加载:延迟加载,只有当需要使用某个资源时才加载它。懒加载可以减少页面的初始加载时间和带宽消耗,提高页面加载性能和用户体验。
  • 预加载:在页面加载完成后,提前加载将来可能需要使用的资源。预加载可以在用户实际需要资源之前就将其加载到浏览器缓存中,以降低后续加载时的延迟,但可能会增加初始页面加载时间和带宽消耗。

9)回流与重绘的概念及触发条件

  • 回流(Reflow):指的是浏览器重新计算元素的位置和大小,并重新绘制页面的过程。当页面布局或者 DOM 结构发生变化时,会触发回流。回流可能会导致页面的重新排版和重绘,是较为昂贵的操作。
  • 重绘(Repaint):指的是浏览器重新绘制页面元素的过程,但不涉及布局的改变。当元素的样式发生变化,但不影响其在文档流中的位置和大小时,会触发重绘。

触发回流和重绘的条件包括:

  • 改变 DOM 结构:比如添加、删除或者修改 DOM 元素。
  • 改变样式:比如修改元素的尺寸、位置、颜色等样式属性。
  • 获取某些属性:比如 offsetTop、offsetLeft、offsetWidth、offsetHeight、scrollTop、scrollLeft、scrollWidth、scrollHeight、clientTop、clientLeft、clientWidth、clientHeight 等,因为这些属性需要返回最新的布局信息,可能会触发回流。

10)如何避免回流与重绘?

为了避免过多的回流和重绘,可以采取以下措施:

  • 批量修改样式:避免频繁地单独修改元素的样式属性,可以将多次修改合并成一次操作,减少回流和重绘的次数。
  • 使用 CSS3 动画:CSS3 提供的动画效果(如 transform、opacity)可以利用硬件加速,减少回流和重绘的次数。
  • 使用文档片段进行 DOM 操作:将需要频繁修改的 DOM 元素先添加到文档片段中,然后统一将文档片段添加到文档中,这样可以减少回流次数。
  • 避免频繁获取布局信息:尽量避免在循环中获取元素的布局信息,可以将需要获取的信息缓存起来,以减少回流次数。
  • 使用虚拟 DOM 技术:在某些情况下,使用虚拟 DOM 技术(如 React、Vue 等框架)可以减少 DOM 操作,从而减少回流和重绘的次数。

通过以上方法,可以有效地减少页面的回流和重绘,提高页面的性能和用户体验。

开源项目地址:https://gitee.com/falle22222n-leaves/vue_-book-manage-system

前后端总计已经 700+ Star,1W+ 访问!

⭐点赞⭐收藏⭐不迷路!⭐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/700789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

专项:PID控制方法深究

1.前言 PID在工业界随处可见。其的原理是什么&#xff1f; 2.数学物理代表意义 PID全名为比例积分微分控制器。顾名思义&#xff0c;表明其由三个控制器组成。 一是P&#xff0c;其代表比例&#xff08;Proportional&#xff09;; 二是I&#xff0c;其代表积分&#xff08;I…

《TCP/IP详解 卷一》第2章 Internet地址结构

目录 2.1 引言 2.2 表示IP地址 2.3 基本的IP地址结构 单播地址 全球单播地址&#xff1a; 组播地址 任播地址 2.4 CIDR和聚合 2.5 特殊用途地址 2.6 分配机构 2.7 单播地址分配 2.8 与IP地址相关的攻击 2.9 总结 2.1 引言 2.2 表示IP地址 IPv4地址&#xff1a;3…

【数据分享】不同共享社会经济路径下中国未来280个城市土地数量数据集(免费获取)

了解未来城市土地数量对于城市规划、社会经济发展和气候变化研究具有重要意义。通过分析不同共享社会经济路径下中国未来城市土地数量的数据&#xff0c;可以为未来城市发展趋势和可持续规划提供科学依据。 本次我们给大家带来的是不同共享社会经济路径下中国未来城市土地数量…

【退役之重学前端】使用vite+vue3+vue-router,重构react+react-router前后端分离的商城后台管理系统

前言&#xff1a; 对前端各个技术板块&#xff0c;HTML、CSS、JavaScript、ES6、vue家族&#xff0c;整体上能“摸其大概”。笔者计划重构一个基于react的商城后台管理系统。 —— 2024年2月16日 技术选型 #语言和框架 vue3sassbootstrapES7 #架构 前后端分离分层架构模块化…

C# 实现网页内容保存为图片并生成压缩包

目录 应用场景 实现代码 扩展功能(生成压缩包) 小结 应用场景 我们在一个求职简历打印的项目功能里&#xff0c;需要根据一定的查询条件&#xff0c;得到结果并批量导出指定格式的文件。导出的格式可能有多种&#xff0c;比如WORD格式、EXCEL格式、PDF格式等&#xff0c;…

使用命令行创建文件夹和文件

创建文件夹 md 文件夹名字 创建文件 echo >文件名字.后缀然后回车即可 注意点:echo >文件名字.后缀 的 >后面不可以加空格&#xff0c;不然会报错\

深入理解Go语言中的Channel与Select

Go 语言中的 Channel 和 Select 是并发编程中的重要概念和机制&#xff0c;它们为协程之间的通信和同步提供了强大的支持。接下来将深入介绍 Channel 和 Select 的概念、使用方法、特性&#xff0c;并结合实际工作场景和示例代码进行详细讨论。 1. Channel 概述 1.1 什么是 C…

《Docker极简教程》--Docker卷和数据持久化--Docker卷的概念

在容器化环境中&#xff0c;数据持久性是一个重要挑战。传统上&#xff0c;容器是短暂的、易于销毁和重建的&#xff0c;这与数据的持久性需求相冲突。当容器被销毁时&#xff0c;容器内部的数据通常会丢失&#xff0c;因此需要一种方法来确保数据的持久性。这涉及到数据的存储…

Java基础之lambda表达式(五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

《Python 语音转换简易速速上手小册》第9章 特定领域的语音处理(2024 最新版)

文章目录 9.1 语音处理在不同行业的应用9.1.1 基础知识9.1.2 主要案例:智能客服机器人案例介绍案例 Demo案例分析9.1.3 扩展案例 1:医疗语音助手案例介绍案例 Demo案例分析9.1.4 扩展案例 2:语言学习应用案例介绍案例 Demo

Python 实现Hash算法验证

目录 一、Hash 算法的原理及作用 二、python验证Hash算法代码实现 三、运行脚本验证如下 四、在线工具验证结果如下 五、总结 一、Hash 算法的原理及作用 Hash加密算法是一种将任意长度的消息压缩成固定长度散列值的算法。它的特点是快速、不可逆和安全。对于相同的消息&a…

Java整型字符串数组

整数类型 byte&#xff0c;字节 【1字节】表示范围:-128~127即: -2^7~2^7 -1 short&#xff0c;短整型 【2字节】表示范围: -32768~32767 int&#xff0c;整型 【4字节】表示范围: -2147483648~2147483647 long,长整型 【8字节】表示范围: -9223372036854775…

陪玩软件系统的开发-用PHP书写,uni开发的陪玩平台更有质量-线上线下功能齐全-APP小程序H5公众号都有,源码交付!

线上陪玩系统的功能 在线预订&#xff1a;用户可以在陪玩系统中在线预订陪玩服务&#xff0c;系统会根据用户的订单要求自动匹配陪玩人员。 指定搜索&#xff1a;用户可以通过搜索指定的ID来找到他们想要的陪玩人员。 在线交流&#xff1a;在陪玩系统中提供在线沟通功能&…

听课笔记03

小练习 使用cmd打开qq 切换盘符 qq.exe 有简单的方法吗&#xff1f; 进入多层文件夹太麻烦了。 在任意的文件夹下打开qq 怎么做 当前目录没有qq 把qq的路径记录到电脑上 环境变量 把qq的路径记录到环境变量中 设置环境变量 高级系统设置 path里放系统路径 从上往下找 可以配置任…

Bluesky数据采集框架-1

Bluesky是一个用于实验控制和科学数据和元数据采集的库。它强调以下特点&#xff1a; 1、实时&#xff0c;流式数据&#xff1a;可用于嵌入可视化和处理。 2、丰富元数据&#xff1a;获取和组织来方便复制性和可检索性。 3、实验通用性&#xff1a;对完全不同的硬件无缝地重…

提升装备制造企业竞争力:2023年CRM选型与应用完全解读

在加快产业转型升级的大背景下&#xff0c;高端装备制造业既面临机遇也面临挑战。随着公司规模的不断壮大&#xff0c;再加上装备制造业营销体系及服务体系管理体系的复杂性&#xff0c;一些问题逐渐暴露出来&#xff0c;装备制造业企业需要根据自身业务需求和管理流程选择合适…

指针作为传入传出参数

C语言/C中&#xff0c;当函数参数为指针的时候&#xff0c;一般分为传入和传出参数&#xff1a; 指针前有const&#xff0c;认为是是传入参数&#xff1b; 指针前无const&#xff0c;一般认为是传出参数&#xff1a; 例如&#xff1a; void func(int *value)//形参前没有加…

fpga_RGB模型与硬件加速思维

一 RGB模型 人眼之所以可以看到各种颜色的光&#xff0c;主要是红绿蓝三种感光细胞综合感觉的结果&#xff0c;而红绿蓝三色被称为三原色。 饱和度均为100%的RGB能组合成8种颜色&#xff0c;计算机处理的BMP图片为24bit的位图&#xff0c;即每一通道的颜色可以组合为2的8次方&a…

训练Sora模型,你可能需要这些开源代码,模型,数据集及算力评估

在之前的文章&#xff0c;我们总结了Sora模型上用到的一些核心技术和论文 复刻大模型 Sora 有多难&#xff1f;一张图带你读懂 Sora 的技术路径一文看懂大模型 Sora 技术推演 今天这篇文章来自我们社区讨论交流&#xff0c;我这边整理和总结现有的一些开源代码、模型、数据集…

Java面试问题集锦

1.JDK、JRE、JVM 三者有什么关系&#xff1f; JDK&#xff08;全称 Java Development Kit&#xff09;&#xff0c;Java开发工具包&#xff0c;能独立创建、编译、运行程序。 JDK JRE java开发工具&#xff08;javac.exe/java.exe/jar.exe) JRE&#xff08;全称 Java Runtim…