网站的高性能架构
在年前项目验收的时候甲方爸爸想了解如何提高网站的性能,为此学习了相关知识。
网站性能是客观的指标,可以具体体现到响应时间、吞吐量等技术指标,同时也是主观的感受,而感受则是一种与具体参与者相关的微妙的东西,用户的感受和工程师的感受不同,不同的用户感受也不同
1. 网站性能测试
性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准。不同视角下的网站性能有不同的标准,也有不同的优化手段。
1.1不同视角下的网站性能
-
1.1.1 用户视角的网站性能
从用户角度,网站性能就是用户在浏览器上直观感受到的网站响应速度快还是慢
-
优化手段:
使用一些前端架构优化手段,通过优化页面HTML式样、利用浏览器端的并发和异步特性、调整浏览器缓存策略、使用CDN服务、反向代理等手段,使浏览器尽快地显示用户感兴趣的内容、尽可能近地获取页面内容,即使不优化应用程序和架构,也可以很大程度地改善用户视角下的网站性能
-
-
1.1.2 开发人员视角的网站性能
开发人员关注的主要是应用程序本身及其相关子系统的性能,包括响应延迟、系统吞吐量、并发处理能力、系统稳定性等技术指标。
-
优化手段:
使用缓存加速数据读取,使用集群提高吞吐能力,使用异步消息加快请求响应及实现削峰,使用代码优化手段改善程序性能。
-
-
1.1.3 运维人员视角的网站性能
运维人员更关注基础设施性能和资源利用率,如网络运营商的带宽能力、服务器硬件的配置、数据中心网络架构、服务器和网络带宽的资源利用率等
-
优化手段
建设优化骨干网、使用高性价比定制服务器、利用虚拟化技术优化资源利用等
-
1.2 性能测试指标
不同视角下有不同的性能标准,不同的标准有不同的性能测试指标,从开发和测试人员的视角,网站性能测试的主要指标有响应时间、并发数、吞吐量、性能计数器等
-
1.2.1 响应时间
指应用执行一个操作需要的时间,包括从发出请求开始到收到最后响应数据所需要的时间
-
1.2.2 并发数
指系统能够同时处理请求的数目,这个数字也反映了系统的负载特性。
-
1.2.3 吞吐量
单位时间内系统处理的请求数量,体现系统的整体处理能力
-
1.2.4 性能计数器
它是描述服务器或操作系统性能的一些数据指标。包括SystemLoad、对象与线程数、内存使用、CPU使用、磁盘与网络I/O等指标。这些指标也是系统监控的重要参数,对这些指标设置报警阈值,当监控系统发现性能计数器超过阈值时,就向运维和开发人员报警,及时发现处理系统异常。
1.3 性能测试方法
性能测试是一个总称,具体可细分为性能测试、负载测试、压力测试、稳定性测试。
2. Web前端性能优化
2.1 浏览器访问优化
-
2.1.1 减少http请求
-
2.1.1.1 为什么
HTTP协议是无状态的应用层协议,意味着每次HTTP请求都需要建立通信链路、进行数据传输,而在服务器端,每个HTTP都需要启动独立的线程去处理
-
2.1.1.2 怎么办
合并CSS、合并JavaScript、合并图片,这样一次请求就可以获取多个需要的文件
-
-
2.1.2 使用浏览器缓存
将更新的频率都低,而访问平凡的文件缓存在浏览器中,可以极好地改善性能
-
2.1.3 启用压缩
在服务器端对文件进行压缩,在浏览器端对文件解压缩,可有效减少通信传输的数据量。有利就有弊,压缩对服务器和浏览器产生一定的压力,在通信带宽良好,而服务器资源不足的情况下要权衡考虑。
-
2.1.4 CSS放在页面最上面、JavaScript放在页面最下面
浏览器会在下载完全部CSS之后才对整个页面进行渲染,因此最好的做法是将CSS放在页面最上面,让浏览器尽快下载CSS。JavaScript则相反,浏览器在加载JavaScript后立即执行,有可能会阻塞整个页面,造成页面显示缓慢,因此JavaScript最好放在页面最下面。
-
2.1.5 减少Cookie传输
Cookie包含在每次请求和响应中,太大的Cookie会严重影响数据传输
-
2.1.5 CDN加速
CDN(Content Distribute Network,内容分发网络)的本质仍然是一个缓存,而且将数据缓存在离用户最近的地方,使用户以最快速度获取数据
-
2.1.6 反向代理
1、可以缓存静态内容,加快web访问;
2、保护网站安全,相当于在Web服务器和可能的网络攻击之间建立了一个屏障。
3. 应用服务器性能优化
优化手段主要有缓存、集群、异步等。