前端性能优化
除了雅虎军规35条,这里再强调几条
1. 首屏加载
1. 首屏尽量使用服务端渲染
2. 首屏尽量使用懒加载
此懒加载并非图片的懒加载,而是指这个文档内容的懒加载。可以先服务端渲染用户可见的部分内容(实际要大于此,因为用户可能会滚动屏幕),
剩余的部分用js去加载和渲染,这样可以尽快的显示首屏,又不影响用户的浏览。
2. DNS预读取
DNS预读取是一项使浏览器主动去执行域名解析的功能。DNS请求需要的带宽非常小,但是延迟却有点高。 下面是引用MDN的一句话:
在某些浏览器中这个预读取的行为将会与页面实际内容并行发生(而不是串行)。正因如此,某些高延迟的域名的解析过程才不会卡住资源的加载。 这样可以极大的加速(尤其是移动网络环境下)页面的加载。在某些图片较多的页面中,在发起图片加载请求之前预先把域名解析好将会有至少 5% 的图片加载速度提升。
具体做法: head标签里加上
<link rel="dns-prefetch" href="https://data.dadaabc.com/">
data.dadaabc.com为静态资源的域名,如还有其他链接的域名,都一起加进去。
3. 脚本预解析
在head中使用script的defer,能够使得浏览器提前解析脚本,但是有不会阻塞文档,并且会在文档加载完成后执行脚本。
<script defer src="script.js">
实际上,目前的浏览器在script阻塞浏览器加载的时候,会开启另一个线程来读取下面的html文档,继续对下面的资源进行解析和加载,
但是不修改DOM树。
4. 字体、图片预加载
link的preload可以预加载一些字体和资源文件,显示的时候可以加快速度
<link rel="preload" as="font" href="xxx.woff>
跨域资源预加载要添加crossorigin属性
<link rel="preload" crossorigin as="script" href="xxx.js">
preload 加载页面必需的资源如 CDN 上的字体文件, prefetch 预先加载下一屏数据
5. 多域名分发静态资源
同域下浏览器能并发的请求有限,为了增加并发,尤其是一些静态资源上,可以使用多个域名。但由于域名DNS解析本身也是耗时的,
所以也不是越多越好,chrome最大支持6路并发,所以一般设置2-4个域名较为合适。
具体的做法是:再增加cdn域名来下载静态资源。比如图片全部用img.dadaabc.com/域名,
css资源全部用css.dadaabc.com/域名,这些域名最终全部指向同样的cdn服务器。
静态资源域名加前缀可以用gulp-rev-replace来实现。
6. 优化关键渲染路径
优化关键渲染路径,可以减少白屏时间。关键渲染路径表示浏览器呈现页面的所有必须步骤。 我们想要找到最小的阻塞CSS集合,或者关键 CSS,以使页面显示给用户。
关键css指首屏视口内的css,非视口内的元素的css仍然为非关键css
1.内联嵌入关键 CSS 样式
内联可以加快解析渲染,缺点是不能缓存
2.预加载非关键 CSS
异步加载(或预加载preload)非关键css
<link href="/style.96106fab.css" rel="preload" as="style" onload="this.rel='stylesheet'">
相关工具
webpack插件
html-critical-webpack-plugin
优化 Critical Rendering Path(关键渲染路径),尽可能减少阻塞渲染的 JavaScript 和 CSS。
常见做法包括使用 async/defer 让浏览器下载 JavaScript 的同时不阻塞 HTML 解析,
内联页面关键部分的样式到 HTML 中等。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2016-08-16 ES6 import export
2016-08-16 gitingore配置样例