前端性能

前端性能原理解读(一)

我怕爱的太早我们不能终老 提交于 2019-12-18 05:48:09
1、网页的生成过程   要了解网页性能好不好,那就必须先了解网页是怎么生成的 HTML转换为DOM节点 CSS转换为CSSOM(CSS Object Model) DOM与CSSOM结合生成一个渲染树(包含每一个节点的视觉信息) 生成布局:即将所有渲染树的所有节点进行平面合成 将布局绘制(paint)在屏幕上   这五步里面,第一步到第三步都非常快,耗时的是第四步和第五步。 "生成布局"(flow)和"绘制"(paint)这两步,合称为"渲染"(render)。 2、重绘与重排    网页生成的时候,至少会渲染一次,用户访问的过程中还会不断渲染。以下3中情况会导致网页重新渲染。 修改DOM 修改样式表 用户事件(比如鼠标悬停、页面滚动、输入框键入文字、改变窗口大小等等)   重新渲染就需要重新生成布局、重新绘制。前者叫做“重排”(reflow),后者叫做“重绘”(repaint)   需要注意的是, "重绘"不一定需要"重排" ,比如改变某个网页元素的颜色,就只会触发"重绘",不会触发"重排",因为布局没有改变。但是, "重排"必然导致"重绘" ,比如改变一个网页元素的位置,就会同时触发"重排"和"重绘",因为布局改变了。 3、对于性能的影响    重绘与重排会不断触发、这是不可避免的。但是,他们非常耗费资源,是导致网页性能低下的根本原因。    提高网页性能就是要降低“重绘”和

如何提升Web前端性能?

一世执手 提交于 2019-12-17 14:20:42
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 什么是WEB前端呢?就是用户电脑的浏览器所做的一切事情。我们来看看用户访问网站,浏览器都做了哪些事情:输入网址 –> 解析域名 -> 请求页面 -> 解析页面并发送页面中的资源请求 -> 渲染资源 -> 输出页面 -> 监听用户操作 -> 重新渲染。 通过上面的路径可以看出浏览器分为请求、传输、渲染三部分来实现用户的访问,本文就从这三个部分来浅析如何提升WEB前端性能。 请求 浏览器为了减少请求传输,实现了自己的缓存机制。浏览器缓存就是把一个已经请求过的Web资源拷贝一份副本存储在浏览器中,当再次请求相同的URL时,先去查看缓存,如果有本地缓存,浏览器缓存机制会根据验证机制(Etag)和过期机制(Last-Modified)进行判断是使用缓存,还是从服务器传输资源文件。具体流程如下图所示: 如何从请求、传输、渲染3个方面提升Web前端性能 浏览器的请求有些是并发的,有些是阻塞的,比如:图片、CSS、接口的请求是并发;JS文件是阻塞的。请求JS的时候,浏览器会中断渲染进程,等待JS文件加载解析完毕,再重新渲染。所以要把JS文件放在页面的最后。 JS也可以通过两种方式由阻塞改成并行:一种是通过创建script标签,插入DOM中;另一种是在Script标签中增加async属性。 每种浏览器对同一域名并发的数量有限制

前端性能监控系统

浪尽此生 提交于 2019-12-10 00:11:55
引言 前阵子在 w3ctech 的 走进名企 - 百度前端 FEX 专场 上曾“夸下海口”说听完讲座后七天就可以打造自己的前端性能监控系统,既然说出去了也不能食言。从前一篇文章 前端数据之美 相信大家对前端数据有了一定的了解,下面就针对其中的性能数据及其监控进行详细阐述。 开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界。 Day 1 为什么要监控性能? “If you cannot measure it, you cannot improve it” ———— William Thomson 这是一个最基本的问题,为什么要关注和监控前端性能?对于公司来说,性能在一定程度上与利益直接相关。国外有很多这方面的调研数据: 性能 收益 Google 延迟 400ms 搜索量下降 0.59% Bing 延迟 2s 收入下降 4.3% Yahoo 延迟 400ms 流量下降 5-9% Mozilla 页面打开减少 2.2s 下载量提升 15.4% Netflix 开启 Gzip 性能提升 13.25% 带宽减少 50% 数据来源:http://www.slideshare.net/bitcurrent/impact-of-web-latency-on-conversion-rates http:/

使用 NGINX 进行微程序缓存的好处

六眼飞鱼酱① 提交于 2019-12-09 19:15:35
【编者按】本文作者为 Owen Garrett,主要介绍使用 nginx 进行微程序缓存的好处,辅之以生动的实例。文章系国内 ITOM 管理平台 OneAPM 编译呈现。 NGINX 和 NGINX Plus 被广泛应用于网站内容缓存,小到个人网站,大到一些世界大型内容分发网站(CDNs),例如 MaxCDN 和 CloudFlare。 微程序缓存通过将动态、非个人化的内容缓存很短的时间,能有效加速这些内容的传递。在本文中,笔者将展示如何利用微程序缓存技术将一个基于 WordPress 的应用程序最高提速400倍。 ##为什么要缓存内容? 缓存能够一举两得:通过更快地传递内容,缓存可以改善网站性能,同时减轻源服务器的负担。缓存的效率取决于内容的缓存度。这些内容可以存储多长时间,如何检查更新,相同的缓存内容可以发给多少用户? 缓存 静态内容 ,例如图片、 Java Script 和 CSS 文件和几乎不变的网页内容是个相当简单的过程。缓存更新的处理方法包括 常规暂停 、 条件 Get ,如果有必要,还可以用cache-busting技术来替换引用对象的URL。 缓存 个人化内容 (即通过服务器应用为每位用户定制的内容)几乎不可能,因为服务器对同一资源的每次请求的回复都不相同。服务器端引用( SSI )和页面片段缓存(ESI)等技术可以协助组合网页,但是这些技术很难实行

高流量网站如何做出高性能?

走远了吗. 提交于 2019-12-09 18:22:48
前一段时间接触了一个教育集团的老总,集团本身是在教育实体化阶段也就是各种教科书盛行的时候起来的,最近 10 年互联网教育越来越火,老板也瞅准商机跳了进来。 可是公司的在线教育板块一直不温不火没有什么起色,Google Analytics、百度统计、CNZZ 数据专家等各种运营软件用了个遍还是老样子。 **「你说为啥?」**老总总是问身边的人。 我尝试打开他公司的官网以及几个教育产品的网页,没有一个页面在 10s 内被打开。。。 你说为啥?! 在时间如此精贵的当下,任何一个互联网公司如果 不注重用户体验 ,一味的注重开发、上线、销售,其结局。。。不管你们想到没想到,我想到了。。。。 有一种声音总是在喊**「我们要高性能网站!」**于是各种服务器、各种 CDN、DNS 全上了之后却发现—— 花了不少效果不好 。 那么,问题来了。。。。 #####一.什么叫高性能的网站? 现有两个网站性能架构设计方案:方案 A 和方案 B。方案 A 在小于 100 个并发用户访问时,每个请求的响应时间是 1 秒,当并发请求达到 200 的时候,请求的响应时间将骤增到 10 秒。方案 B 不管是 100 个还是 200 个并发访问,每个请求的响应时间都差不多是 1.5 秒。 哪个方案的性能好? 如果你的老板要求「我们要改善一下网站的性能」, 你知道他指的是什么吗? 同类型的两个网站,X

全栈工程师之路-Node.js

北城以北 提交于 2019-12-09 13:56:23
1. 全栈工程师之路-Node.js 高可用架构专用 原文[高可用架构] https://mp.weixin.qq.com/s?_ biz=MzAwMDU1MTE1OQ==&mid=405001493&idx=1&sn=f0ecab9b31bad83fb065ac37bb728245&scene=1&srcid=0324iTRH12WbXL5VDxXnEhH8&key=710a5d99946419d938a0ffc16a3c72118eefbe33f3f8312ed218bccbde126b60e818c8eb1068a9b07bdc8116a077b911&ascene=0&uin=NDIzMjM3MDk1&devicetype=iMac+MacBookPro11%2C1+OSX+OSX+10.10.5+build(14F27)&version=11000006&pass ticket=xdp3crkTJPuOH6ggUMKnwvfDGKEnMUvwC5V%2FdxlW%2FKdNO9R8zI1xsDFSR4ZJECUU 仔细的对比了一遍,感谢tim yang和庆丰校长的整理,非常严谨,比我讲的要好,另外感谢霍老板封我是StuQ明星讲师[呲牙][呲牙] 1.1. 主要内容 Why Node.js ? 历史 槽点 架构平衡和选择 企业级 我眼中的Node.js核心 快速开发实践

全栈工程师之路-Node.js

左心房为你撑大大i 提交于 2019-12-09 13:56:12
全栈工程师之路-Node.js 高可用架构专用 原文[高可用架构] https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=405001493&idx=1&sn=f0ecab9b31bad83fb065ac37bb728245&scene=1&srcid=0324iTRH12WbXL5VDxXnEhH8&key=710a5d99946419d938a0ffc16a3c72118eefbe33f3f8312ed218bccbde126b60e818c8eb1068a9b07bdc8116a077b911&ascene=0&uin=NDIzMjM3MDk1&devicetype=iMac+MacBookPro11%2C1+OSX+OSX+10.10.5+build(14F27)&version=11000006&pass_ticket=xdp3crkTJPuOH6ggUMKnwvfDGKEnMUvwC5V%2FdxlW%2FKdNO9R8zI1xsDFSR4ZJECUU 仔细的对比了一遍,感谢tim yang和庆丰校长的整理,非常严谨,比我讲的要好,另外感谢霍老板封我是StuQ明星讲师[呲牙][呲牙] 持续更新版本 仓库地址 https://github.com/i5ting/nodejs-fullstack 在线阅读 http:/

持续部署单页应用的7大技巧

不羁岁月 提交于 2019-12-06 14:38:55
【编者按】本文作者为 Parker Selbert,主要介绍高效部署静态托管应用的7大技巧,助你实现持续、安全且高效的交付流程。本文系国内 ITOM 管理平台 OneAPM 编译呈现。 单页应用不仅能提供非常丰富的 用户体验 ,而且为持续开发开辟了一个完全不同于以前的新途径。将前端应用从服务器分离,从而简化团队职责的划分,是非常合理的策略。维护一个单独的前端代码库,允许团队通过 API ,快速迭代应用特性、改善交互功能。 然而,交付静态资源的过程并不都是如此顺利的。在开始持续部署静态资源之前,你的团队必须注意托管和交付中的陷阱。 以下是一些有关高效部署静态托管应用的技巧,帮助你实现持续、安全,以及最重要的,高效的交付流程。 ##1. 使用最先进的打包和部署工具 如果你的团队已经决定单独部署客户端和服务器代码,很有可能的是,服务器并不是使用 Node.js 语言编写的,但这并不能阻止你使用 Node.js 和 NPM 来构建和管理应用程序!你可以自由使用 最先进的打包和开发工具 ,而不用管服务器端采用了什么框架。 一旦你的构建和测试过程不受服务器框架限制,也就释放了交付过程。一旦前端应用通过了集成测试,CI 服务器就可以构建一个正式版(参见技巧2),直接交付并进行发布(参见技巧5)。 ##2. 缩小,压缩和源映射(Source Maps)是必不可少的

【前端性能优化】高性能JavaScript整理总结

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-06 05:27:41
高性能JavaScript整理总结 关于前端性能优化:首先想到的是 雅虎军规34条 然后最近看了《高性能JavaScript》 大概的把书中提到大部分知识梳理了下并加上部分个人理解 这本书有参考雅虎特别性能小组的研究成果,所以跟34 军规有很多相似之处 有不当之处请在评论区指正,感谢~ 约定 :很多单词语法都是简写比如doc指document,点点点代表不重要代码省略,码字不易(/双手合十) 1. 加载和执行 JavaScript是单线程,所以JavaScript的加载和执行是从上至下加载执行完一个再继续加载执行下一个文件,会阻塞页面资源的加载,所以一般情况下JavaScript文件放在body标签 内 底部,很多后端开发人员放在body标签外下面,这样做不好的地方有两处:1、不规范 2、 可能 会造成js获取不到页面元素而导致报错。而放在body标签内底部可以确保js执行前页面渲染完成  <body> js... //正确 </body> <!-----------------------分界线----------------------------> <body> </body> js... //错误 合并脚本,每个<script>标签初始化下载都会阻塞页面渲染,所以减少页面的<script>标签数量可以起到优化作用,内嵌脚本外链脚本通用,另外HTTP会带来的额外的性能消耗

前端文档汇总(含代码规范、开发流程、知识分享,持续更新)

左心房为你撑大大i 提交于 2019-12-05 08:34:30
front-end-Doc 前端文档汇总(含代码规范、开发流程、知识分享,持续更新) 原Github地址 进去后可直接点链接查看文章 综合类 地址 前端文档基本例子 https://github.com/mgbq/front... 前端知识体系 http://www.cnblogs.com/sb1987... 前端知识结构 https://github.com/JacksonTia... Web前端开发大系概览 https://github.com/unruledboy... Web前端开发大系概览-中文版 http://www.cnblogs.com/unrule... Web Front-end Stack v2.2 https://raw.githubusercontent... 免费的编程中文书籍索引 https://github.com/justjavac/... 前端书籍 https://github.com/dypsilon/f... 前端免费书籍大全 https://github.com/vhf/free-p... 前端知识体系 http://www.cnblogs.com/sb1987... 免费的编程中文书籍索引 https://github.com/justjavac/... 智能社 - 精通JavaScript开发 http://study.163.com