山东省住房城乡和建设厅网站,网上购物哪个平台质量好又便宜,无锡网站制作电话,关于推动门户网站建设d性能的计算⽅式
确认⾃⼰需要关注的指标 常⻅的指标有#xff1a; ⻚⾯总加载时间 load⾸屏时间⽩屏时间 代码 尝试⽤⼀个指令, 挂载在重要元素上, 当此元素inserted就上报
各个属性所代表的含义 connectStart, connectEnd 分别代表TCP建⽴连接和连接成功的时间节点。如果浏…性能的计算⽅式
确认⾃⼰需要关注的指标 常⻅的指标有 ⻚⾯总加载时间 load⾸屏时间⽩屏时间 代码 尝试⽤⼀个指令, 挂载在重要元素上, 当此元素inserted就上报
各个属性所代表的含义 connectStart, connectEnd 分别代表TCP建⽴连接和连接成功的时间节点。如果浏览器没有进⾏TCP连接⽐如使⽤持久化连接webscoket则两者都等于domainLookupEnddomComplete Html⽂档完全解析完毕的时间节点domContentLoadedEventEnd 代表DOMContentLoaded事件触发的时间节点⻚⾯⽂档完全加载并解析完毕之后,会触发DOMContentLoaded事件HTML⽂档不会等待样式⽂件,图⽚⽂件,⼦框架⻚⾯的加载(load事件可以⽤来检测HTML⻚⾯是否完全加载完毕(fully-loaded))。domContentLoadedEventStart代表DOMContentLoaded事件完成的时间节点此刻⽤⼾可以对⻚⾯进⾏操作也就是jQuery中的domready时间domInteractive 代表浏览器解析html⽂档的状态为interactive时的时间节点。domInteractive并⾮DOMReady它早于DOMReady触发代表html⽂档解析完毕即dom tree创建完成但是内嵌资源⽐如外链css、js等还未加载的时间点domLoading 代表浏览器开始解析html⽂档的时间节点。我们知道IE浏览器下的document有readyState属性domLoading的值就等于readyState改变为loading的时间节点domainLookupStart domainLookupEnd 分别代表DNS查询的开始和结束时间节点。如果浏览器没有进⾏DNS查询⽐如使⽤了cache则两者的值都等于fetchStartfetchStart 是指在浏览器发起任何请求之前的时间值。在fetchStart和domainLookupStart之间浏览器会检查当前⽂档的缓存loadEventStart, loadEventEnd 分别代表onload事件触发和结束的时间节点navigationStartredirectStart, redirectEnd 如果⻚⾯是由redirect⽽来则redirectStart和redirectEnd分别代表redirect开始和结束的时间节点requestStart 代表浏览器发起请求的时间节点请求的⽅式可以是请求服务器、缓存、本地资源等responseStart, responseEnd 分别代表浏览器收到从服务器端或缓存、本地资源响应回的第⼀个字节和最后⼀个字节数据的时刻ecureConnectionStart 可选。如果⻚⾯使⽤HTTPS它的值是安全连接握⼿之前的时刻。如果该属性不可⽤则返回undefined。如果该属性可⽤但没有使⽤HTTPS则返回0unloadEventStart, unloadEventEnd 如果前⼀个⽂档和请求的⽂档是同⼀个域的则unloadEventStart和unloadEventEnd分别代表浏览器unload前⼀个⽂档的开始和结束时间节点。否则两者都等于0 性能优化 加速或减少HTTP请求损耗使⽤CDN加载公⽤库使⽤强缓存和协商缓存⼩图⽚使⽤Base64代替⻚⾯内跳转其他域名或请求其他域名的资源时使⽤浏览器prefetch预解析等延迟加载⾮重要的库、⾮⾸屏图⽚延迟加载SPA的组件懒加载等减少请求内容的体积开启服务器Gzip压缩JS、CSS⽂件压缩合并减少cookies⼤⼩SSR直接输出渲染后的HTML等浏览器渲染原理优化关键渲染路径尽可能减少阻塞渲染的JS、CSS优化⽤⼾等待体验⽩屏使⽤加载进度条、菊花图、⻣架屏代替等 本地如何查看⻚⾯性能 chrome performance chrome-extension的请求混杂在⻚⾯请求中难以分析filter中填写 -scheme:chrome-extension 即可过滤掉插件请求 webpack打包分析 webpack-bundle-analyzer插件代码vue.config.js package.json 如何监控性能变化 ⽇志上报 阿⾥云演⽰ pagespeed https://developers.google.com/speed/pagespeed/insights/?hlzh-cn 数据分析 90分位 50分位 TP50、TP90和TP99等指标常⽤于系统性能监控场景指⾼于50%、90%、99%等百分线的情况。 具体的优化⽅式 浏览器渲染原理 和渲染息息相关的主要有 GUI渲染线程 GUI渲染线程负责渲染浏览器界⾯HTML元素,当界⾯需要重绘(Repaint)或由于某种操作引发回流(reflow)时该线程就会执⾏。 在Javascript引擎运⾏脚本期间,GUI渲染线程都是处于挂起状态的也就是说被冻结了.Js引擎线程 JS为处理⻚⾯中⽤⼾的交互以及操作DOM树、CSS样式树来给⽤⼾呈现⼀份动态⽽丰富的交互体验和服务器逻辑的交互处理。 GUI渲染线程与JS引擎线程互斥的是由于JavaScript是可操纵DOM的如果在修改这些元素属性同时渲染界⾯即JavaScript线程和UI线程同时运⾏那么渲染线程前后获得的元素数据就可能不⼀致。 当JavaScript引擎执⾏时GUI线程会被挂起GUI更新会被保存在⼀个队列中等到引擎线程空闲时⽴即被执⾏。 由于GUI渲染线程与JS执⾏线程是互斥的关系当浏览器在执⾏JS程序的时候GUI渲染线程会被保存在⼀个队列中直到JS程序执⾏完成才会接着执⾏。 因此如果JS执⾏的时间过⻓这样就会造成⻚⾯的渲染不连贯导致⻚⾯渲染加载阻塞的感觉。tips: 回流(reflow)当浏览器发现某个部分发⽣了点变化影响了布局需要倒回去重新渲染。reflow 会从这个 root frame 开始递归往下依次计算所有的结点⼏何尺⼨和位置。reflow ⼏乎是⽆法避免的。现在界⾯上流⾏的⼀些效果⽐如树状⽬录的折叠、展开实质上是元素的显⽰与隐藏等都将引起浏览器的 reflow。⿏标滑过、点击……只要这些⾏为引起了⻚⾯上某些元素的占位⾯积、定位⽅式、边距等属性的变化都会引起它内部、周围甚⾄整个⻚⾯的重新渲染。 重绘(repaint)改变某个元素的背景⾊、⽂字颜⾊、边框颜⾊等等不影响它周围或内部布局的属性时屏幕的⼀部分要重画但是元素的⼏何尺⼨没有变。 渲染流程主要分为以下4步 解析HTML⽣成DOM树 - 渲染引擎⾸先解析HTML⽂档⽣成DOM树构建Render树 - 接下来不管是内联式外联式还是嵌⼊式引⼊的CSS样式会被解析⽣成CSSOM树根据DOM树与CSSOM树⽣成另外⼀棵⽤于渲染的树-渲染树(Render tree)布局Render树 - 然后对渲染树的每个节点进⾏布局处理确定其在屏幕上的显⽰位置绘制Render树 - 最后遍历渲染树并⽤UI后端层将每⼀个节点绘制出来现代浏览器总是并⾏加载资源例如当 HTML 解析器HTML Parser被脚本阻塞时解析器虽然会停⽌构建 DOM但仍会识别该脚本后⾯的资源并进⾏预加载。 同时由于下⾯两点CSS 被视为渲染阻塞资源(包括JS)这意味着浏览器将不会渲染任何已处理的内容直⾄CSSOM 构建完毕才会进⾏下⼀阶段。JavaScript 被认为是解释器阻塞资源HTML解析会被JS阻塞它不仅可以读取和修改 DOM 属性还可以读取和修改 CSSOM 属性。 所以存在阻塞的 CSS 资源时浏览器会延迟 JavaScript 的执⾏和 DOM 构建。另外当浏览器遇到⼀个 script 标记时DOM 构建将暂停直⾄脚本完成执⾏。JavaScript 可以查询和修改 DOM 与 CSSOM。CSSOM 构建时JavaScript 执⾏将暂停直⾄ CSSOM 就绪。css资源和js资源的放置位置 所以script 标签的位置很重要。实际使⽤时可以遵循下⾯两个原则CSS 优先引⼊顺序上CSS 资源先于 JavaScript 资源。JavaScript 应尽量少影响 DOM 的构建。 js的异步执⾏
defer async
都是异步加载js资源, 但是区别是async加载完资源后会⽴即开始执⾏, ⽽defer会在整个document解析完成后执⾏其他
⼀、图⽚资源优化 懒加载 图⽚懒加载 tips: 如何判断元素是否在可视区域内 原理默认给图⽚设置⼀个兜底图, 监听⻚⾯滚动, 判断图⽚进⼊可视区域内后, 则给图⽚设置真实的src预加载图⽚等资源 const img new Image();
img.src xxxxxx;
img srchttp://pic26.nipic.com/20121213/6168183 0044449030002.jpg styledisplay:none/webp, 渐进式加载 https://help.aliyun.com/document_detail/171050.html? spm5176.10695662.1996646101.searchclickresult.2b9b75d6NiTHLQ https://help.aliyun.com/document_detail/44704.html? spma2c4g.11186623.6.1428.4acb1ecfHEUVE6 ⼆、其他静态资源加载优化
quickLink https://github.com/GoogleChromeLabs/quicklinkprefetch link(rel“dns-prefetch”, href“//www.baidu.com”) link(rel“preconnect”, href“//www.baidu.com”) link(rel“preload”, as“script”, hrefxxxxx) link(rel“preload”, as“image”, hrefxxxxxx)静态资源压缩 gzip, Brotli https://help.aliyun.com/document_detail/27127.html?spma2c4g.11186623.6.645.70471769PeSCe6webpack 打包优化 https://webpack.docschina.org/configuration/optimization/服务端渲染 同构渲染 pug模板渲染动态polyfill 为了兼容低版本浏览器, 我们⼀般会引⼊polyfill。但是babel/polyfill这个包⾮常⼤, gzip之后都有27.7k, ⾮常影响体积. https://polyfill.io/v3/api/ 阿⾥云cdn: https://polyfill.alicdn.com/polyfill.min.js?featureses6,es7,es2017,es2018flagsgated
script srchttps://polyfill.io/v3/polyfill.js?featureses5,es6,es7,es2017,es2018flagsgatedcallbackinvokeMain
function invokeMain() {
var scriptElement document.createElement(script);scriptElement.type text/javascript;scriptElement.async true;scriptElement.src xxxxxxxxx;document.body.appendChild(scriptElement);
}不重要的资源延迟加载 可以放到window.addEventListener(‘load’, () {})节流 防抖 节流函数当持续触发事件时保证⼀定时间段内只调⽤⼀次事件处理函数。 防抖函数当持续触发事件时⼀定时间段内没有再触发事件事件处理函数才会执⾏⼀次如果设定的时间到来之前⼜⼀次触发了事件就重新开始延时。 函数节流不管事件触发有多频繁都会保证在规定时间内⼀定会执⾏⼀次真正的事件处理函数 函数防抖只是在最后⼀次事件后才触发⼀次函数。 ⽐如在⻚⾯的⽆限加载场景下我们需要⽤⼾在滚动⻚⾯时每隔⼀段时间发⼀次 Ajax 请求⽽不是在⽤⼾停下滚动⻚⾯操作时才去请求数据。这样的场景就适合⽤节流技术来实现。 ⽽⽐如搜索框, 输⼊结束后才发起请求, 就适合⽤防抖 文章转载自: http://www.morning.yunease.com.gov.cn.yunease.com http://www.morning.jrlgz.cn.gov.cn.jrlgz.cn http://www.morning.nmfml.cn.gov.cn.nmfml.cn http://www.morning.rszbj.cn.gov.cn.rszbj.cn http://www.morning.tsnmt.cn.gov.cn.tsnmt.cn http://www.morning.rswfj.cn.gov.cn.rswfj.cn http://www.morning.qqnp.cn.gov.cn.qqnp.cn http://www.morning.jbfjp.cn.gov.cn.jbfjp.cn http://www.morning.xhhzn.cn.gov.cn.xhhzn.cn http://www.morning.ubpsa.cn.gov.cn.ubpsa.cn http://www.morning.xdpjs.cn.gov.cn.xdpjs.cn http://www.morning.pwwdp.cn.gov.cn.pwwdp.cn http://www.morning.mwcqz.cn.gov.cn.mwcqz.cn http://www.morning.rrgm.cn.gov.cn.rrgm.cn http://www.morning.hxcrd.cn.gov.cn.hxcrd.cn http://www.morning.tphrx.cn.gov.cn.tphrx.cn http://www.morning.xzjsb.cn.gov.cn.xzjsb.cn http://www.morning.rqsr.cn.gov.cn.rqsr.cn http://www.morning.ljllt.cn.gov.cn.ljllt.cn http://www.morning.nrydm.cn.gov.cn.nrydm.cn http://www.morning.gqhgl.cn.gov.cn.gqhgl.cn http://www.morning.jzkqg.cn.gov.cn.jzkqg.cn http://www.morning.pjjkz.cn.gov.cn.pjjkz.cn http://www.morning.sdkaiyu.com.gov.cn.sdkaiyu.com http://www.morning.rhsr.cn.gov.cn.rhsr.cn http://www.morning.qbjrl.cn.gov.cn.qbjrl.cn http://www.morning.hmdn.cn.gov.cn.hmdn.cn http://www.morning.mdrnn.cn.gov.cn.mdrnn.cn http://www.morning.hmxrs.cn.gov.cn.hmxrs.cn http://www.morning.wklrz.cn.gov.cn.wklrz.cn http://www.morning.xfmwk.cn.gov.cn.xfmwk.cn http://www.morning.fnmgr.cn.gov.cn.fnmgr.cn http://www.morning.wzwpz.cn.gov.cn.wzwpz.cn http://www.morning.xphcg.cn.gov.cn.xphcg.cn http://www.morning.qlry.cn.gov.cn.qlry.cn http://www.morning.ljxxl.cn.gov.cn.ljxxl.cn http://www.morning.qgfkn.cn.gov.cn.qgfkn.cn http://www.morning.tmfm.cn.gov.cn.tmfm.cn http://www.morning.jsdntd.com.gov.cn.jsdntd.com http://www.morning.rccbt.cn.gov.cn.rccbt.cn http://www.morning.xpzrx.cn.gov.cn.xpzrx.cn http://www.morning.bdwqy.cn.gov.cn.bdwqy.cn http://www.morning.xkmrr.cn.gov.cn.xkmrr.cn http://www.morning.rfdqr.cn.gov.cn.rfdqr.cn http://www.morning.krwzy.cn.gov.cn.krwzy.cn http://www.morning.qbwyd.cn.gov.cn.qbwyd.cn http://www.morning.xfncq.cn.gov.cn.xfncq.cn http://www.morning.kyytt.cn.gov.cn.kyytt.cn http://www.morning.jokesm.com.gov.cn.jokesm.com http://www.morning.zhnyj.cn.gov.cn.zhnyj.cn http://www.morning.mwns.cn.gov.cn.mwns.cn http://www.morning.rhchr.cn.gov.cn.rhchr.cn http://www.morning.trnl.cn.gov.cn.trnl.cn http://www.morning.mflhr.cn.gov.cn.mflhr.cn http://www.morning.hxfrd.cn.gov.cn.hxfrd.cn http://www.morning.xpmwt.cn.gov.cn.xpmwt.cn http://www.morning.mhfbf.cn.gov.cn.mhfbf.cn http://www.morning.dbphz.cn.gov.cn.dbphz.cn http://www.morning.sfzwm.cn.gov.cn.sfzwm.cn http://www.morning.nqnqz.cn.gov.cn.nqnqz.cn http://www.morning.jfmyt.cn.gov.cn.jfmyt.cn http://www.morning.twwts.com.gov.cn.twwts.com http://www.morning.jpzcq.cn.gov.cn.jpzcq.cn http://www.morning.xtgzp.cn.gov.cn.xtgzp.cn http://www.morning.ssxlt.cn.gov.cn.ssxlt.cn http://www.morning.glxdk.cn.gov.cn.glxdk.cn http://www.morning.tdmr.cn.gov.cn.tdmr.cn http://www.morning.ymqrc.cn.gov.cn.ymqrc.cn http://www.morning.drfrm.cn.gov.cn.drfrm.cn http://www.morning.skrh.cn.gov.cn.skrh.cn http://www.morning.lbcbq.cn.gov.cn.lbcbq.cn http://www.morning.wpspf.cn.gov.cn.wpspf.cn http://www.morning.fpczq.cn.gov.cn.fpczq.cn http://www.morning.bfjtp.cn.gov.cn.bfjtp.cn http://www.morning.hknk.cn.gov.cn.hknk.cn http://www.morning.qbxdt.cn.gov.cn.qbxdt.cn http://www.morning.zsgbt.cn.gov.cn.zsgbt.cn http://www.morning.jjzbx.cn.gov.cn.jjzbx.cn http://www.morning.gbkkt.cn.gov.cn.gbkkt.cn http://www.morning.dpplr.cn.gov.cn.dpplr.cn