-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于前端性能优化:系统总结 #26
Labels
Optimize
优化
Comments
前端工程与性能优化 |
浏览器:加载、解析、渲染详解: |
Web性能优化——预加载、预渲染:prefetch, prerender |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
前端性能优化梳理
四个方面考虑:静态资源缓存 >>> 请求优化 [请求量 压缩 + 速度 ssr ] >>> 编译时优化 >>> 运行渲染时优化
网络优化:
webview缓存
cookie滥用情况(种cookie要区分主域 子域)
请求优化: 两方面: 请求量(带宽);;加快请求速度(时延)
图片: png(无损、大) jpg(有损)svg(渲染成本,浏览器渲染,icon-font系统渲染)webp(移动端推荐)base64(即时预览,canvas)
cdn: 哪些要缓存、cors易忽略、源站缓存、怎样缓存命中率、CDN Combo请求合并
并行优化:
编译时优化
tree-shaking:去除没用过的代码
UglifyJsPlugin:压缩代码
ExtractTextPlugin:提取css出来
dllPlugin: 提取公共库
运行时渲染优化
css阻塞: 不会阻塞html DOM tree, 但会阻塞渲染render tree 【布局layout-绘制paint-合成composit】
js阻塞:加载并行, 执行阻塞DOM的解析和渲染
defer/ async
并行下载, async下载完即执行; defer等DOM解析完再执行
DOM的重绘回流
减少DOM操作,DOM碎片技术(fragment)
渲染队列:60fps(16ms) requestAnimation(渲染速度 < 显示器刷新速度)
开启GPU加速
浏览器队列: 宏队列(ajax, setTimeout) -> 微队列(promise) -> 渲染队列
通常情况下,我们认为 TCP 网络传输的最大传输单元(Maximum Transmission Unit,MTU)为 1500B,即一个RTT(Round-Trip Time,网络请求往返时间)内可以传输的数据量最大为 1500 字节。因此,在前后端分离的开发模式中,尽量保证页面的 HTML 内容在 1KB 以内,这样整个 HTML 的内容请求就可以在一个 RTT 内请求完成,最大限度地提高 HTML 载入速度。
一个是页面加载的很快,另一个是页面使用起来很流畅。
当面试官问你如何进行性能优化时,你该这么回答(一)
https://juejin.im/post/5a99f80cf265da238c3a1e16
The text was updated successfully, but these errors were encountered: