We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
通常情况下的瓶颈主要体现在下载 CSS 文件、下载 JavaScript 文件和执行 JavaScript。
div.style.left = '10px'; div.style.top = '10px'; div.style.width = '20px'; div.style.height = '20px'; console.log(div.offsetLeft); console.log(div.offsetTop); console.log(div.offsetWidth); console.log(div.offsetHeight); 得益于浏览器的渲染队列机制,当我们修改了元素的几何属性,导致浏览器触发重排或重绘时。它会把该操作放进渲染队列,等到队列中的操作到了一定的数量或者到了一定的时间间隔时,浏览器就会批量执行这些操作。但对于低端浏览器,依然会触发多次重排
典型场景: 文档中的函数或者文本进行匹配的时候。 不好的正则表达式极易引起性能问题。其核心问题在于:js 的正则匹配是基于 NFA 的,易引起回溯问题。 正则引擎分为 NFA(非确定性有限状态自动机),和 DFA(确定性有限状态自动机)。 DFA 对于给定的任意一个状态和输入字符,DFA 只会转移到一个确定的状态。并且 DFA 不允许出现没有输入字符的状态转移。而 NFA 对于任意一个状态和输入字符,NFA 所能转移的状态是一个非空集合。模糊匹配、贪婪匹配、惰性匹配都会带来回溯问题。典型的正则匹配如 (.\*)+\d ,便会进行回溯。那么平时开发的时候 1. 正则要越精确越好 2. 改用 DFA 的正则引擎 具体可以参考:浅谈正则表达式原理
浏览器工作原理与实践——https://time.geekbang.org/column/intro/216 关键渲染路径——https://developers.google.com/web/fundamentals/performance/critical-rendering-path RAIL性能模型——https://web.dev/rail/
The text was updated successfully, but these errors were encountered:
No branches or pull requests
本质上,要从用户体验指标考虑页面性能
分析要点
首屏的显示涉及了哪些技术因素
首屏分析
3. 分析渲染流水线——这个阶段包括了解析 HTML、下载 CSS、下载 JavaScript、生成 CSSOM、执行 JavaScript、生成布局树、绘制页面一系列操作。 此阶段涉及的知识点: * CSS加载不会阻塞DOM树的构建,但会影响布局树(也叫Render树)的构建 * JavaScript的执行依赖于前面的CSS
通常情况下的瓶颈主要体现在下载 CSS 文件、下载 JavaScript 文件和执行 JavaScript。
优化方案
1.网络传输
2. 加载时优化
3.运行时性能
4.缓存
5.内存
用户性能监控
参考
浏览器工作原理与实践——https://time.geekbang.org/column/intro/216
关键渲染路径——https://developers.google.com/web/fundamentals/performance/critical-rendering-path
RAIL性能模型——https://web.dev/rail/
最后
The text was updated successfully, but these errors were encountered: