黑马程序员技术交流社区

标题: 【上海校区】浏览器工作原理及web 性能优化 [打印本页]

作者: 不二晨    时间: 2018-8-20 09:32
标题: 【上海校区】浏览器工作原理及web 性能优化
浏览器工作原理一、浏览器简介二、渲染引擎
Internet Explorer uses Trident, Firefox uses Gecko, Safari uses WebKit. Chrome and Opera (from version 15) use Blink, a fork of WebKit.WebKit 是一个开源渲染引擎,起初作为Linux platform的引擎,后被 Apple应用于Mac. 详见 webkit.org.
客户端:如在浏览器输入https://www.baidu.com/,经过 DNS 解析,查到baidu.com对应的 IP(不同时间、地点对应的 IP 可能会不同),浏览器向该 IP 发送 HTTP 请求。
服务端:服务器接收到 HTTP 请求,经计算,返回 HTTP 请求,内容如下:

水平有限,在此就不深入介绍了,如感兴趣可参考百度大神nwind的博客:从输入 URL 到页面加载完成的过程中都发生了什么事情?
浏览器对请求的呈现。默认渲染引擎可以呈现html,xml及图片。(通过插件)也可以呈现其它数据,比如pdf等。 目前只考虑html和css方面。
渲染主流程:

Figure : Rendering engine basic flow

Figure : WebKit main flow
content tree:在此,渲染引擎解析html文档并将元素转换成DOM节点。
render tree:在此,渲染引擎解析style(外部css文件或内联style)并转换。
这是一个渐进式过程. 为保证好的UED,渲染引擎尽早展现内容. 在开始构建并展现render树之前,它不会等所有html被解析。部分内容被解析并呈现,同时进程继续解析网络中不断请求到的其余内容。
具体渲染过程浏览器拿到了 server 端返回的 HTML 内容后,开始解析并渲染。最初拿到的内容就是一堆字符串,必须先结构化成计算机擅长处理的基本数据结构--- DOM 树 (最基本的数据结构之一)。
解析过程中,如果遇到<link href="...">和<script src="...">这种外链加载 CSS 和 JS 的标签,浏览器会异步下载,下载过程和上文中下载 HTML 的流程一样。只不过,这里下载下来的字符串是 CSS 或者 JS 格式的。
您在浏览 HTML 网页时从来不会看到“语法无效”的错误。这是因为浏览器会纠正任何无效内容,然后继续工作。
1. 明显不能在某些外部标签中添加的元素。在此情况下,我们应该关闭所有标签,直到出现禁止添加的元素,然后再加入该元素。2. 我们不能直接添加的元素。这很可能是网页作者忘记添加了其中的一些标签(或者其中的标签是可选的)。这些标签可能包括:HTML HEAD BODY TBODY TR TD LI(还有遗漏的吗?)。3. 向 inline 元素内添加 block 元素。关闭所有 inline 元素,直到出现下一个较高级的 block 元素。4. 如果这样仍然无效,可关闭所有元素,直到可以添加元素为止,或者忽略该标记。复制代码CSS 解析
和 HTML 不同,CSS 是上下文无关的语法,可以使用简介中描述的各种解析器进行解析。事实上,CSS 规范定义了 CSS 的词法和语法。
图:解析 CSS处理脚本和样式表的顺序Web 安全浏览器重新渲染(re-render):重绘(repaint)与重排(reflow)
重新渲染,就需要重新生成布局和重新绘制。前者叫做"重排"(reflow),后者叫做"重绘"(repaint)。"重绘"不一定需要"重排","重排"必然导致"重绘"。重排和重绘会不断触发,这是不可避免的。但是,它们非常耗费资源,是导致网页性能低下的根本原因。提高网页性能,就是要降低"重排"和"重绘"的频率和成本,尽量少触发重新渲染。
web性能优化(web performance)为什么要性能优化转化率就是金钱- 关乎用户体验(Performance is about the user experience)- 以人为本(Performance is about people)如何去优化要发送什么(Mind what resources you send)
构建高性能应用程序的有效方法是审核发送给用户的资源。虽然Chrome开发人员工具中的网络面板可以很好地总结给定页面上使用的所有资源,但如果您到目前为止尚未考虑性能,那么知道从哪里开始可能会令人生畏。以下是一些建议:
如何发送(Mind how you send resources)当您知道需要为您的应用发送哪些资源以使其成为您想要的美观和功能时,请考虑下一步如何发送它们。与预见和预防一样,交付对于构建快速用户体验至关重要。
数据规模(Mind how much data you send)
通过一些关于哪些资源适合发送以及如何发送它们的想法,我们将介绍一些限制发送数据的建议:
Web Caching Optimization reduces server load, bandwidth usage, and latency. CDNs use dedicated web caching software to store copies of documents passing through their system.Leveraging the browser cache is crucial. It is recommended to have a max-age of 7 days in such cases. This saves server time and makes things altogether faster.
Redirects are performance killers. Avoid them whenever possible. A redirect will generate additional round-trip times and therefore quickly doubles the time that is required to load the initial HTML document before the browser even starts to load other assets.


【转载】
链接:https://juejin.im/post/5b721656f265da28140e53ba




作者: 梦缠绕的时候    时间: 2018-8-21 16:27





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2