时间是把杀猪刀,转眼做JAVA WEB开发已经有五年多了,五年时间说长不长说短不短,前段时间看了一本关于web站点性能的书,总觉得应该记下点什么,于是才有心思来这里开个博客,记录一下读书时的心得,也可以理解为读书笔记;
这本书开头很直接:如何评价一个web站点的性能,首先要从用户角度出发,用户访问一系列的页面的等待体验时间,当然我们都希望等待的时间越短越好,但是在用户等待的这段时间里,到底发生了什么呢?作者将这段时间分为三部分:
1. 数据在网络上传输的时间
数据在网络上传输的时间分为两部分,即浏览器主机发出的请求数据经过网络到达服务器的时间,和服务器的响应数据经过网络返回到客户端主机的时间,针对这段时间的优化引入的最重要的一个概念就是带宽
2. 站点服务器处理请求并生成响应数据的时间
服务器接收处理请求并生成响应数据的过程中涉及到非常多的因素,比如,硬件方面:CPU的处理能力和个数,磁盘的读写效率,内存空间的大小等,应用方面:服务器的并发策略,IO机制,服务器本身的逻辑复杂程度等,为了能够量化的描述这部分时间的长短,我们引入了吞吐量的概念,即服务器每秒处理请求的个数;
3. 浏览器本地计算和渲染的时间
这部分时间主要取决于客户机浏览器的并发策略,样式的渲染方式,脚本解释器的性能等等,这些方面根据不同种类版本的浏览器,也有所不同;当然,这部分时间是我们力所能及范围之外的部分,毕竟我们无法让用户必须使用什么样的浏览器,使用什么样的客户机;
接着,作者列举了一系列的web站点优化手段,我将这些优化手段分为两种类型,纵向的优化和横向的优化:
1. 纵向的优化,主要是指提高单个服务器处理请求的能力;包括:增加网络传输的带宽,减少网页的http请求个数,加快服务器的计算速度,使用动态内容缓存,使用数据缓存,将动态的内容静态化,页面组件的分离,优化数据库等;
2.横向的优化,主要是指,当单个服务器已经发挥了他的处理能力的极限了,但仍然不能满足站点的需求时,我们需要考虑增加服务器主机个数,使用负载均衡,建立分布式文件系统,数据库的扩展,使用分布式计算等策略;