前端性能优化的常用手段

2025上海前端面试遇到问题整理从小公司到大公司各种面试整理(高频题目出现)持续更新中 想在 2025 年前端面试中脱颖而出?别再盲目刷题啦!这里有超实用的“2025 前端高频面试题,亲身经历”分享。每一道题都源自真实面试场景,涵盖 React、Vue 框架应用、性能优化、Webpack 与 Vite 区别等核心要点。不仅能让你熟悉高频考点,更能从答题思路、技巧中掌握应对面试的方法。无论是初出茅庐的新手,还是想跳槽加薪的资深开发者,这份经验分享都能为你助力,让你在面试中自信满满,轻松斩获心仪 offer! 阅读详情

反正,前端性能优化就是很重要,不好好学习怎么进阶到20K+的薪水啊?!

性能优化方面一直有所关注,但如果不去对自己所负责的项目进行一下回锅,实践实践,优化优化,总会有点“书上得来终觉浅”的感觉吧!

从最开始的CSS放到<head>里面、js放到</body>前面、使用雪碧图等,到后面的静态资源压缩、合并以及使用iconfont代替小图标,再到最近实践的gzip压缩、设置HTTP Header缓存字段…

gzip压缩、设置ETag等,早就在《高性能网站建设指南》那两本书中看过,但我一直认为这都是后端小伙伴干得事,就没有怎么留意过。直到最近,对前后端分离的理解越来越充分,对整个项目的部署越来越清晰,对项目里面的资源请求越来越明白,才恍然意识到:前后端分离了,这他妈就是前端自己干的事啊!!!

从以下几个方面来说一说自己实践过的优化方法:

浏览器渲染页面的过程

所谓优化,第一个要弄明白的就是:优化什么、从哪里优化。前端做出来的页面是在浏览器里面呈现的,那浏览器是怎么渲染这个页面的呢?遇到CSS、js静态资源,浏览器是怎么处理的?具体的过程这里不再赘述,网上资源一大堆,我自己之前也写过一篇,《网站性能优化—CRP》,算是谷歌文档的翻译版吧。

理解了浏览器渲染页面的过程,也就明白了:CSS为什么要放到<head>里面、js放到</body>前面,以及js的异步加载(async、defer)等优化。

减少HTTP请求

  • CSS/JS 合并打包
  • 小图标等用iconfont代替:作为单个DOM节点使用,可以设置大小、颜色等,非常便利。个人建议前端来维护这个字体包,每次有新增的图标,让设计师给我们对应的svg文件即可,前端自己去 icomoon.io/ 这个网站,导入原来的selection.json文件,增量生成新的css,无比方便。之前,我一直以为iconfont只能是单色的呢,其实也可以是多色的,svg里面多一些path而已,设计师会搞定的。生成字体后,前端正常引用即可(引用的时候,多色字体会多一些标签)
  • 使用base64格式的图片:有些小图片,可能色彩比较复杂,这个时候再用iconfont就有点不合适了,此时可以将其转化为base64格式(不能缓存),直接嵌在src中,比如webpack的url-loader设置limit参数即可
  • 使用雪碧图:设置背景图尺寸大小,感觉很麻烦,而且雪碧图的维护也不怎么便利,好像使用率越来越低了,都被iconfont取代了

减少静态资源的体积

  • 压缩静态资源:合并打包的js、css文件体积一般会比较大,一些图片也会比较大,这个时候必须要压缩处理。前后端分离项目,不论是gulp还是webpack,都有相应的工具包。针对个别图片,有时候也可以单独拿出来处理,我个人经常使用这个网站 tinypng.com/ 在线压缩

  • 编写高效率的CSS:涉及到代码层面的优化比较多也比较细,不同水平的技术人员写出来的肯定不一样,这里不做进一步的分析。但是为什么要把CSS拿出来说一说呢?因为现在项目里面基本上都在使用CSS预处理器,Less、SaaS、Stylus等等,这导致了某些初级前端的滥用:嵌套5、6层,甚者能达到7、8层,吓死个人!嵌套这么深,影响浏览器查找选择器的速度不说,这也一定程度上产出了很多冗余的字节,这个要改、要提醒,一般建议嵌套3层即可。关于编写高效率的CSS,推荐一篇文章,《Writing efficient CSS selectors》

  • 服务端开启gzip压缩:大招,最近刚知晓,真是太牛逼了,一般的css、js文件能压缩60、70%,当然,这个比率可以设定的。前后端分离,如果前端部署用node、express作服务器的话,使用中间件compression即可开启gzip压缩:

    // server.js
    var express = require('express');
    var compress = require('compression');
    var app = express();
    app.use(compress());复制代码
    

    对于一般的SPA项目,如果node服务器的作用比较简单,比如只是做个接口转发之类的,很多人更倾向用Nginx作服务器,Nginx在转发接口、压缩、缓存等功能上更胜一筹。不过,大部分前端对Nginx应该陌生一些,为了实践技术,用熟悉的node即可,真正的项目部署,有专业的实施人员来搞。

使用缓存

设置Http Header里面缓存相关的字段,做进一步的优化。

express里面也有对静态资源相关的设置,只不过平时没怎么注意:

img

可以设置etag、maxAge等,进一步会有200缓存和304缓存的区别:

200 OK (from cache) 是浏览器没有跟服务器确认,直接用了浏览器缓存;而 304 Not Modified 是浏览器和服务器多确认了一次缓存的有效性,然后再使用的缓存。

相关的讨论可以参考 知乎:阿里云存储如何让浏览器始终以200 (from cache)缓存图片?

内存溢出

这种优化因问题而异吧,最重要的是善于使用Google DevTools里面的Performance面板和Memory面板去分析、查找问题,进而找到优化的点。

内存溢出目前我只碰到过一次,同事用echarts画K线图,同事的js逻辑写的有问题,点击事件发生时canvas反复渲染,导致内存逐渐升高,在APP内,直接导致了APP闪退。我重写了一下js逻辑,针对canvas做了一些优化,修复了这个bug。

目前对这块分析经验还不是很多,后续碰到问题再实践。


性能优化这块,都是一点一点接触的,项目中碰到了问题,然后去分析、优化,解决问题的同时,自己也收获了很多知识。以上是我做前端使用过的优化方法,可能对于大牛来说,或许不值得的一提,但是对于新手来说应该还是有些许参考意义。

有些高级优化还没有实践到,比如划分主域,细节一点的无线滚动优化等,后期会继续学习。

WEB前端性能优化的7大手段详解 本文将详细介绍前端性能优化的7大手段,包括减少请求数量、减小资源大小、优化网络连接、优化资源加载、减少重绘回流、使用性能更好的API和构建优化 立即下载

相关推荐

麒麟系统grub被锁怎么办?双密码遗忘救援指南(实测V10 SP3版本)

本文详细介绍了麒麟系统V10 SP3版本在GRUB和root密码双遗忘情况下的救援指南。通过ISO镜像进入救援模式,结合单用户模式操作,实现密码重置与系统权限恢复,特别适用于等保合规环境。

387

前端项目性能优化方案有哪些

前端项目性能优化方案汇总

m0_51060602的博客 4万+

VMware虚拟机调用NVIDIA显卡全攻略:从3D加速到直通与vGPU

显卡虚拟化技术是虚拟化领域的关键组成部分,它通过在虚拟机中模拟或直接分配物理GPU资源,实现了图形渲染与通用计算的加速。其核心原理在于通过Hypervisor层对GPU指令进行拦截、转换或直接映射,从而平衡资源隔离与性能损耗。这项技术的核心价值在于提升资源利用率、实现计算环境隔离,并支持AI训练、3D渲染、科学计算等高性能负载的灵活部署。在应用场景上,轻量级图形界面加速、CUDA学习验证适合使用虚拟3D加速;而追求极致性能的机器学习训练、专业渲染则需依赖PCIe直通技术;对于企业级GPU资源池化与多租户共享

weixin_32308101的博客 1026

前端性能优化9大策略(面试一网打尽)!

在项目开发过程中,任何一个细节都有可能影响网站的访问速度,如果不了解性能优化知识,很多不利网站访问速度的因素会形成累加,从而严重影响网站的性能,导致网站访问速度变慢,用户体验低下,最终导致用户流失。

富朝阳的博客 3万+

Time-Interleaved Analog-to-Digital Converters

  这篇论文提供了时间交错模数转换器的教程回顾。在解释了偏置、增益、定时和其他不匹配对变换器性能的影响后,给出了目前解决不匹配问题的方法。论文最后总结了时间交错模数转换器的现状。 1.简介   时间交错模数转换器(ADC)将多个子ADC组合成一个ADC系统,可以实现比单独的子ADC[1]更快的采样速率。历史上,时间交错adc的主要缺点是需要紧密匹配子adc[2]的特性。近年来,由于应用需要非常宽带信号的数字化、功率高效子adc的可用性以及由深亚微米互补金属氧化物硅(CMOS)技术实现的微调技术,使得时间交错

weixin_44537056的博客 6732

addBumpConnectTargetConstraint 命令详解

本文介绍了Cadence Innovus中用于倒装芯片设计的addBumpConnectTargetConstraint命令的核心功能和使用方法。该命令主要用于为凸点(Bump)添加连接目标约束,通过绑定实例、引脚/网络和端口号等属性,实现凸点与电源/信号网络的精准映射。文章详细解析了命令语法结构、参数说明及使用场景,包括必选参数(指定凸点方式)、分支选择(实例连接或电源连接类型)以及互斥参数(引脚名与网络名)等重要注意事项,并提供了典型应用示例。该命令特别适用于倒装芯片设计中凸点与PG网络、IO实例的连接

u013620135的博客 394

【性能优化系列之前端】前端性能优化手段

前端i性能

qq_35789269的博客 3153

s8654

The official Snapdragon Ride SX 4.0 development board provides standardized hardware support for the secondary development and functional verification of the s8654 platform.

qq_39257814的博客 6830

前端性能优化的七种方法

前端性能优化主要有七种方法,包括减少请求数量、减少资源大小、优化网络连接、优化资源加载、减少重绘回流、使用性能更好的API和构建优化 1、减少请求数量 1.1 图片处理 1.1.1 雪碧图 雪碧图是根据css sprite音译过来的,就是将很多小图标放在一张图片上就称之为雪碧图,可以减少网站http请求数量,但是当整合图片比较大的时候,一次加载比较慢,随着字体图片、svg图片的流行该技术慢慢退出了舞台 1.1.2 Base64 将图片的内容以Base64格式内嵌到HTML中,可以减少http请求数量,但是

马小兜要努力呀 3万+

GStreamer —— 2.1、Windows搭建GStreamer环境,Qt加载GStreamer库后运行 - “教程1:Hello world!“(附:完整源码)

GStreamer —— 2、Windows搭建GStreamer环境,Qt加载GStreamer库后运行"教程1:Hello world!"

797

华为OD机试 - 魔法收积木 - 二进制(Java 新系统 200分)

华为OD机试 新系统 题库疯狂收录中,刷题。

学Java,找哪吒 443

大白话前端性能优化,常见方法有哪些?

咱来唠唠前端性能优化,其实就是想办法让网页打开得更快、用起来更流畅,就跟给汽车做保养让它跑得更顺溜一样。咱接着唠唠除了之前说的那些,还有啥前端性能优化的招儿。

前端大白话 2231

高通开发系列 - Camera之摄像头调试记录

记录一些调试内容

fulinux的博客 1217

前端性能优化——从 10 多秒到 1.05 秒

点击上方“程序员大咖”,选择“置顶公众号”关键时刻,第一时间送达!关于 性能优化 是个大的面,这篇文章主要涉及到 前端 的几个点,如 前端性能优化 的流程、常见技术手段、...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 187

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

前端面试知识点

Vue2中响应式原理是双向绑定的原则,是在数据获取的时候获取到getter和setter这两个方法,然后对这两个方法进行监听处理,最后在实现之中就实现了响应式原理Definproperty,不能将数组传入进去,也不能获取到数据发生变化的时候。立即获取到的值,Definproperty中的data是一次性传值的,用户体验感不好,会使页面加载速度慢,出现卡顿,不动的现象Proxy可以监听到数组,以及数据进行更改的时的操作,可以获取到添加和修改的操作数据。

baidu_25051161的博客 1074

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

前端基础面试题

2024超级详细的前端面试题

小卡拉米的博客 2079

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

前端面试题整理--http

Http http和https的区别 http传输协议运行在TCP之上。所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。 对称加密:通信双方都使用用一个密钥进行加密解密,比如特工接头的暗号,就属于对称加密;这种方式虽然简单性能好,但是无法解决首次把密钥发给对方的问题,容易被黑客拦截密钥 非对称加密:由私钥+公钥

weixin_44477373的博客 241

星点工具箱:性能提升60%:前端性能优化终极指南

性能优化是一个持续的过程,不是一次性任务测量先行:在优化前先测量,确定瓶颈所在优先级排序:根据影响程度和实施难度排序优化任务关注用户体验:优化核心用户旅程中的关键性能指标保持最佳实践:遵循性能优化的基本原则和最新技术定期监控:持续监控性能指标,及时发现性能退化通过实施上述优化策略,你可以显著提升网站性能,实现高达60%的性能提升。记住,性能优化没有银弹,需要根据具体项目情况选择合适的优化方法,并持续迭代改进。希望这篇指南能帮助你理解前端性能优化的核心概念和实践方法。

2501_92919059的博客 721

JVM调优和深入了解性能优化

JVM调优的本质: 并不是显著的提高系统性能,不是说你调了,性能就能提升几倍或者上十倍,JVM调优,主要调的是稳定。如果你的系统出现了频繁的垃圾回收,这个时候系统是不稳定的,所以需要我们来进行JVM调优,调整垃圾回收的频次。 GC调优原则 调优的原则 1、大多数的java应用不需要GC调优 2、大部分需要GC调优的的,不是参数问题,是代码问题 3、在实际使用中,分析GC情况优化代...

weixin_30697239的博客 124

前端-Vite

Vite

zchen2008 533

前端常见的性能优化手段

在前端,HTML创造结构,CSS表现样式,JS控制行为,三者一起形成了用户可见可操作的web页面。但是不同网站页面的加载速度、用户请求的执行速度却大相径庭。页面初始加载的HTML资源、CSS资源、JS资源、多媒体资源、数据资源等,都会影响页面的加载速度和执行速度。但是好的web页面不仅要简洁易懂,还要让人赏心悦目,还得有内容。所以前端程序员不仅得会写代码,还得注重网站优化和网站安全,更得保证用户体

aa3214567的博客 4116

前端性能优化的七大手段

本文将详细介绍前端性能优化的七大手段,包括减少请求数量、减小资源大小、优化网络连接、优化资源加载、减少重绘回流、使用性能更好的API和构建优化 减少请求数量 【合并】 如果不进行文件合并,有如下3个隐患 1、文件与文件之间有插入的上行请求,增加了N-1个网络延迟 2、受丢包问题影响更严重 3、经过代理服务器时可能会被断开 但是,文件合并本身也有自己的问题 1、首屏渲染问题 2、缓存失效问题 所以,...

qianduanshuo的博客 1040
上一篇: 字节跳动面试官:让所有Android面试者头皮发麻的问题,你知道几个?
下一篇: 对于Handler是怎么进行线程通信,它的原理又是什么,你了解多少?
AndroidYingZi
博客等级 码龄6年 6粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值