当前位置: 首页 > Web前端 > HTML5

渲染机制

时间:2023-04-05 21:17:49 HTML5

1.渲染机制什么是DOCTYPE及其作用DTD告诉浏览器文件是什么类型的文档,浏览器根据它来判断使用什么引擎来解析渲染的文件。DOCTYPE用于声明文档类型和DTD规范。浏览器如何呈现HTML5:HTML4.01Strict:Strict模式不包含presentational和deprecated元素HTML4.01Transitional:Relaxed模式重新排列Reflow定义:DOM结构中的每个元素都有自己的盒模型,这需要浏览器根据各种样式进行计算,并根据计算结果将元素放置在应该出现的位置。触发Reflow:当你添加、删除或修改DOM节点时,会导致Reflow或Repaint移动DOM位置。当你修改CSS样式时,当你调整窗口大小时,或者当你滚动时,当你修改网页的默认字体时,重绘Repaint定义:页面上所有要呈现的内容都被绘制到屏幕上。触发Rrpaint:DOM修改CSS修改示例:添加DOM时,最好添加一次,避免多次。Layout总结Layout:当用户输入一个URL时,浏览器会发送一个请求,请求的URL对应的资源HTML解析器会解析该文件并构建成DOM树。在构建DOM树时,遇到JS和CSS元素,HTML解析器将控制权交给JS或CSS解析器。当JS或CSS解析器解析完这个元素后,HTML继续解析下一个元素,直到整个DOM树构建完成。DOM树建好后,浏览器把DOM树去掉一些不可见的元素,然后用CSSOM合成一个rendertree,然后浏览器根据rendertree计算出每个节点(元素)在屏幕上的位置。这个过程称为布局,输出是布局树。最后,浏览器根据布局树将页面渲染到屏幕上。同步任务和异步任务EventLoop:浏览器引擎遇到setTimeout,识别为异步任务。浏览器把这个时间模块拿走,时间到了就放到异步队列中。异步任务:setTimeout和setIntervalDOM事件ES6Promise3。页面性能提高页面性能的方法:资源压缩整合,减少HTTP请求将在解析HTML后执行。如果有多个defer,会按照加载的先后顺序依次执行。异步将在加载后立即执行。如果有多个defer,执行顺序和加载顺序将无关紧要。BrowserCache-》缓存分类-》缓存原理及缓存相关的HTTPHeaderStrongCache//表示绝对时间,服务器发出的ExpiresExpires:Thu,21Jan201723:39:02GMT//比较会有当地时间的偏差。在3600s内不需要请求Cache-Control。Cache-Control:max-age=3600//如果两次都下发,则指定后者。协商缓存和服务器协商//如果服务器发出的时间过期Last-ModifiedIf-Modified-SinceLast-Modified:Web,26Jan201700:35:11GMT//Hash值判断是否可以使用-->EtagIf-None-MatchusesCDN:NetworkAccelerationPre-resolutionDNS如果页面以HTTPS协议开头,强制启用DNS预解析动态脚本加载:varoHead=document.getElementsByTagName('HEAD').item(0);varoscrīpt=document.createElement("脚本");oscrīpt.type="文本/javascrīpt";oscrīpt.src="test.js";oHead.appendChild(oscrīpt);延迟和异步用法:性能优化4.Error监控前端错误分类及时运行错误:代码错误1)try...catch2)window.onerror资源加载错误1)object.onerror2)performance.getEntries()返回一个数组performance.getEntries().forEach(item=>{console.log(item.name)})3)错误事件捕获扩展:跨域js运行错误能否捕获,错误提示什么,如何处理?1)在script标签中添加crossorigin属性2)设置js资源响应头,添加Access-Control-Allow-Origin:报错的基本原理是使用Ajax通信报错,使用Image对象报错