性能优化

网页性能优化

久未见 提交于 2019-12-10 00:41:58
提到网页性能优化,一般分为两部分,加载性能优化和交互性能优化。 1.加载性能优化 当在浏览器中输入一个 URL 或者在其他页面点击一个链接时,浏览器要做以下工作:DNS 查询,建立 TCP 链接,发送请求,接受响应,渲染页面,执行 Load 监听事件,至此页面加载就完成了。下面我们按照这个步骤思考如何优化页面加载性能? 1.DNS 查询 1.减少 DNS 查询 2.使用 DNS Prefetching(DNS 预获取)特性缩短 DNS 查询时间。 大专栏 网页性能优化 p>DNS 查询一般占用带宽少,但是延迟可能很高,典型的一次 DNS 查询需要 20-120ms。而 DNS 预获取为了获得较低的延迟,牺牲 DNS 查询次数。 参考: Mozilla Developer Network 参考: DNS Prefetching Implications 减少请求 使用 Data URI, 使用 CSS Sprites http://www.csdn.net/article/2013-09-13/2816925-CSS-Sprites-vs.-Data-URIs:-Which-is-Faster-on-Mobile ? 2.TCP 连接 1.使用 keep-alive 保持持久连接 2.交互性能优化 来源: https://www.cnblogs.com/lijianming180/p

网站性能优化— WebP 全方位介绍

我只是一个虾纸丫 提交于 2019-12-10 00:11:42
谈到优化网站性能时,主要目标之一就是减少要发送到浏览器的数据量(即 payload)。而当前,图片通常是页面构成中最耗费流量的部分,因此降低图片的大小是一个最为有效的优化网页 前端性能 的办法。 有很多工具可以压缩图像,以便减少文件大小,但仍然在一定程度上受文件类型的限制, 图像编码 的方式对最终生成文件的大小有很大的影响。 在这篇文章里将介绍一种被称为 WebP 的新型图片格式,旨在在不影响用户体验的情况下减少图片的大小。 #####一.WebP是什么? WebP 是由谷歌开发的一种图像格式,与 JPEG 图像相比,这种格式最多可以减少图片文件大小的 34%。从而显著优化页面加载时间和带宽使用情况。 上图是 JPEG 和 80% 压缩质量的 WebP 图像之间的比较 ,来源于 Luc Viator, Creative Commons Attribution-Share Alike 3.0 Unported. 根据谷歌团队的介绍,自从去年 Chrome Web Store 转而使用 WebP 后,整个网站图片的大小平均减少 30%。这相当于每天节省了数 tb 的带宽!谷歌的 Play Store 目前也使用 WebP 格式储存图像。 WebP 格式支持 无损 和 有损 的图像压缩、alpha 通道透明度、颜色配置文件、元数据和动画,这些特性使 WebP

大数据Spark性能优化指南基础

烈酒焚心 提交于 2019-12-09 15:04:36
在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。在美团•大众点评,已经有很多同学在各种项目中尝试使用Spark。大多数同学(包括笔者在内),最初开始尝试使用Spark的原因很简单,主要就是为了让大数据计算作业的执行速度更快、性能更高。 然而,通过Spark开发出高性能的大数据计算作业,并不是那么简单的。如果没有对Spark作业进行合理的调优,Spark作业的执行速度可能会很慢,这样就完全体现不出Spark作为一种快速大数据计算引擎的优势来。因此,想要用好Spark,就必须对其进行合理的性能优化。 Spark的性能调优实际上是由很多部分组成的,不是调节几个参数就可以立竿见影提升作业性能的。我们需要根据不同的业务场景以及数据情况,对Spark作业进行综合性的分析,然后进行多个方面的调节和优化,才能获得最佳性能。 笔者根据之前的Spark作业开发经验以及实践积累,总结出了一套Spark作业的性能优化方案。整套方案主要分为开发调优、资源调优、数据倾斜调优、shuffle调优几个部分。开发调优和资源调优是所有Spark作业都需要注意和遵循的一些基本原则,是高性能Spark作业的基础;数据倾斜调优

H5游戏性能优化整理(cocos-js 3.16)

﹥>﹥吖頭↗ 提交于 2019-12-09 11:42:05
近期在一家公司负责H5游戏加载速度优化,这里把近期做的项目优化项做一个整理分享: html渲染流程 HTML解析过程:构建DOM树、构建CSSOM树、根据DOM树和CSSOM树构建render树、有了render树就开始布局Layout、最后绘制paint。 1、 构建DOM树 :   将HTML构建成一个DOM树,也就是构建节点,把所有的节点都构建出来。 2、 构建CSSOM :   解析css去构建CSSOM树。 3、 构建render树 : DOM已经构建好了,css也有了,浏览器就会根据这两个来构造render树。 4、 布局 :      当render树有了,通过render树,浏览器开始计算各个节点的位置和样式。 5、 绘制 :      遍历render树,在页面上绘制每个节点。 6、 重排reflow :  当render树绘制完成之后,比如JavaScript改变样式或添加节点,这时候render树就需要重新计算。 7、 重绘repaint :  重新绘制页面。 HTML整个解析过程看起来很简单,但是我们要知道解析过程中css、js和dom的加载顺序。我们都知道 HTML是自上往下解析 的,在解析过程中: 1、如果遇到link和style,那就就会去下载这些外部的css资源,但是 css跟DOM的构建是并行的 ,就是说不会阻塞DOM树的构建。 2、如果遇到

Oracle性能优化图文详解——利用第三方工具

与世无争的帅哥 提交于 2019-12-09 10:37:05
开发中或者是正在运行的系统性能显著恶化的场合,需要进行性能优化。当听到性能优化时,有些人可能会感觉到非常困难,如果使用第三方工具的话,通过使用索引或者内存等可以非常简单的进行性能优化。这篇文章将以 Object Browser 为例来介绍怎样简单优化数据库性能。 性能优化是什么 EC系统的“3秒钟规则” 假设在EC网站上,访问网站的顾客都必须要等待三秒钟的响应时间,这个时间被称为“3秒钟规则”。如果响应时间在三秒钟以上的话,顾客就会认为这个网站服 务慢,有可能会导致商业机会的丢失。不用说EC网站的例子,为了有效的推行业务,系统的性能是非常重要的。系统中并不仅仅要安装重要的功能(功能需求), 还必须要知道响应时间是多少,单位时间内电脑的处理量、通信线路的数据传送量等(非功能需求)。 数据库即使是在系统开发的后端,也有调整响应时间的性能优化。数据库性能优化就是针对响应时间非常慢的场合实施的对策。OB有很多功能支持性能优化。 性能优化的流程 以下是包含数据库的一般的性能优化的流程。 1. 调查 性能优化首先要从性能测定和找到产生问题的地方开始。要把系统构成和应用设计作为优化对象进行确认和测定,调查延迟原因。 测定方式除了响应时间之外,还可以查看SQL实行计划中“cost”使用量。 2. 设定目标值 接下来,我们要知道要把性能改善到何种程度。进行性能优化有很多种手段

海量数据处理的SQL性能优化

≡放荡痞女 提交于 2019-12-08 19:07:28
1 设计阶段的优化 1.1 表设计 1.1.1 范式化 数据库设计三范式定义: 1. 第一范式:每个字段只包含最小的信息属性。 例如常见的学号:入学年份+班级+编号,是不符合第一范式的,需要将其拆解为:入学年份、班级、编号。 2. 第二范式:(在满足第一范式基础上) 模型含有主键,非主键字段依赖主键。 3. 第三范式:(在满足第二范式基础上) 模型非主键字段不能相互依赖 。 例如订单表,一般来说订单表的主键是订单号。在此表中,字段下单时间、客户ID是符合第二范式的,而客户姓名这个字段就不满足第二范式,应当放入客户表内,组成客户ID客户姓名。 范式化的设计能有效降低数据冗余,更新方便快速,降低了数据不一致的风险。故常见于联机交易型的数据库。 1.1.2 反范式化 有意不符合范式化的设计,常见于反第二第三范式。 符合三范式的设计在降低冗余的同时也带来了问题。如果需要对数据进行加工处理(例如具有订单表、客户表,需要统计某个年龄的客户的订单总金额)的时候,需要不断进行关联操作。当订单数量极为庞大的时候,这个关联操作所需要消耗的资源将会相当巨大,导致查询性能低下。因此在数据仓库的海量数据的处理中,常使用反范式化的方式进行设计来提高性能,用空间换取时间。例如在订单表内添加上下订单的客户的生日,则只需直接执行筛选即可。 反范式化的设计并没有定势,需要视具体的业务而定

web前端性能优化学习笔记 2019

廉价感情. 提交于 2019-12-08 14:49:26
> 一03.png无损压缩,彩图体积大, webp,无损的比PNG小26%,有损的比jpg小25% > 二08 css文件放在 < head > 里,js文件放在 < body > 里 js变量和函数优化: 尽量使用id选择器 尽量避免使用eval js函数尽可能保持简洁 使用事件节流函数 使用事件委托 js动画优化: 避免添加大量js动画 尽量使用css3动画 尽量使用canvas动画 合理使用requestAnimationFrame动画代替setTimeout.setInterval 合理使用缓存: 合理使用DOM对象 缓存列表长度 使用可缓存的ajax > 09如何对JavaScript的缓存进行优化 indexedDB:存储几十几百兆 对比 cookie:存储kb级别 索引数据库 应用于: 客户端存储大量结构化数据 无网络连接情况下使用 将冗余,很少修改但经常访问的数据,以避免随时从服务端获取数据 LocalStorage: 本地存储 应用于: 缓存静态文件内容JS/CSS(比如百度M站首页) 缓存不常变更的API接口数据 缓存地理位置信息 浏览在页面的具体位置 > 10JS模块化加载方案 ES6 import //square.js export function square(x){ return x*x } //main.js import {square}

web前端性能优化

与世无争的帅哥 提交于 2019-12-08 00:56:00
前端性能优化其实就是让使用户等待的时间减少,那么显而易见的就是提高网速,但这不是我们程序员可以搞的东西,就说下我们能做的吧。 要说前端性能有话,你必须先了解:从用户输入URL到页面渲染都经历了什么。 传送门: https://segmentfault.com/a/1190000006879700 上面文章内容很多,如果你了解上面知识,或者不想花时间了解上面,那么直接看下面吧。 从URL到页面大致一下几个过程: 1、DNS解析 2、TCP连接 3、发送HTTP请求 4、服务器处理请求并返回HTTP报文 5、浏览器解析渲染页面 6、连接结束 从上面的过程中我将前端性能优化分为两大部分: 一、网络相关的一切,包括DNS解析 HTTP请求等等 二、web优化,就是前端页面相关部分,也就是我们日常撸代码能够做到的一些 网络相关的一些优化 DNS优化 1、设置DNS多级缓存:浏览器缓存,系统缓存,路由器缓存,IPS服务器缓存,根域名服务器缓存,顶级域名服务器缓存,主域名服务器缓存。 2、DNS负载均衡(DNS重定向):使用CDN(Content Delivery Network)内容分发网络,返回一个离用户最近的IP地址。 HTTP 减少HTTP请求:页面内的图片,或者引入的CSS文件和JS文件等都是一个请求,都等重复上面的过程,减少请求的次数自然就提高了访问页面的速度。 方法: 1

IOS 项目性能优化

怎甘沉沦 提交于 2019-12-08 00:42:22
iOS 项目性能优化 一, iOS 性能优化概述 1. 项目多余图片资源释放 2. 缓存图片优化 3. 界面卡顿优化 4.列表中阴影和圆角的处理 5. 代码优化 6. 安装包塑身 一, iOS 性能优化概述 项目多余的图片资源需要释放 选择是否缓存图片. 对imageName方法的使用判断 界面卡顿优化 列表中阴影和圆角的处理 代码优化 安装包塑身 1. 项目多余图片资源释放 分析工具LSUnusedResources的使用 整个本地图片资源30M以上, 占用较大空间 大概3M的本地图片资源从来没被使用 2. 缓存图片优化 常见的从bundle中加载图片的方式有两种,一个是用UIImageName,二是用imageWithContentOfFile,第一种比较常见一点。 imageNamed 的优点是当加载时会缓存图片。可以参考苹果官方文档 imageNamed 的文档, 3. 界面卡顿优化 卡顿原因分析: Kingfisher框架 的使用导致的内存暴涨 后台返回的高清大图影响 layoutSubviews和cell赋值数据的时候处理大量逻辑 解决方法: 设置缓存大小,定时清理缓存 1.设置最大缓存容量 2.页面销毁的时候恢复, 并且删除menoryCache 3.把layoutSubviews的部分设置放到awakeFromNib 4.减少cell赋值数据的时候做过多耗时逻辑 4

jQuery的性能优化,你知道几条

岁酱吖の 提交于 2019-12-07 19:43:11
================================================================= 一、选择器性能优化建议 ================================================================= 1. 总是从#id选择器来继承 这是jQuery选择器的一条黄金法则。jQuery选择一个元素最快的方法就是用ID来选择了。 $('#content').hide(); 复制代码 或者从ID选择器继承来选择多个元素: $('#content p').hide(); 复制代码 2. 在class前面使用tag jQuery中第二快的选择器就是tag选择器(如$(‘head’)),因为它和直接来自于原生的Javascript方法getElementByTagName()。所以最好总是用tag来修饰class(并且不要忘了就近的ID) varreceiveNewsletter = $('#nslForm input.on'); 复制代码 jQuery中class选择器是最慢的,因为在IE 浏览器 下它会遍历所有的DOM节点。尽量避免使用class选择器。也不要用tag来修饰ID。下面的例子会遍历所有的div元素来查找id为’content’的那个节点: varcontent = $('div