HTTP性能优化

经过以上图,能够从三个方面来优化HTTP的性能。html

1.服务器前端

衡量服务器性能的指标,主要有如下几个:算法

a.吞吐量(或TPS、RPS、QPS)后端

b.并发数浏览器

c.响应时间缓存

d.资源利用率(CPU、内存、硬盘、网络)性能优化

-->提升吞吐量,吞吐量越高,服务器的性能越好!服务器

-->提升并发数,支持的并发数越大,服务器的性能越好!网络

-->下降响应时间,响应时间越短,服务器的性能越好!并发

-->合理利用服务器资源,太高确定是不行,太低也有多是存在问题的!

-->Linux服务器的监控工具主要有top、sar、glances等

2.客户端

由于数据都要经过网络从服务器获取,因此它最基本的性能指标就是:延迟。

所谓的“延迟”其实就是“等待”,等待数据到达客户端时所花费的时间。

延迟的缘由,有几点:

a.距离:因为地理距离致使的延迟,是没法客服的,好比访问数千千米外的网站。

b.带宽

c.DNS查询(若是域名在本地没有缓存的话)

d.TCP握手(必需要通过 SYN、SYN/ACK、ACK 三个包以后才能创建链接)

-->对于 HTTP 性能优化,有一个专门的测试网站:WebPageTest,或使用浏览器的开发者工具

-->一次 HTTP“请求 - 响应”的过程当中延迟的时间是很是大的,有可能会占到90%以上

-->因此,客户端优化的关键,下降延迟

3.传输链路(客户端和服务器之间的传输链路)

使用CDN等技术,总之,要增长带宽,下降延迟,优化传输速度。


-----------------------------------------------具体的优化手段----------------------------------------------------------

主要是优化服务端的性能。

1.前端:能够利用PageSpeed等工具进行检测并根据提示进行优化。

2.后端:主要有如下几方面

a.硬件、软件或服务

好比更换强劲的CPU、内存、磁盘、带宽等,好比使用CDN

b.服务器选择、参数调优

选用高性能的服务器,好比Nginx,它强大的反向代理能力实现“动静分离”,动态页面交给Tomcat等,静态资源交给Nginx

另外,Nginx自身也有能够调优的参数,好比说禁用负载均衡锁、增大链接池,绑定 CPU 等

对于 HTTP 协议必定要启用长链接,由于TCP 和 SSL 创建新链接的成本很是高,可能会占到客户端总延迟的一半以上

TCP 的新特性“TCP Fast Open“,相似 TLS 的“False Start”,能够在初次握手的时候就传输数据,尽量在操做系统和 Nginx 里开启这个特性,减小外网和内网里的握手延迟。


使用HTTP协议内置的“数据压缩”编码,能够选择标准的 gzip,也能够尝试新的压缩算法 br

不过在数据压缩的时候应当注意选择适当的压缩率,不是压缩的越厉害越好

c.缓存

网站系统内部,可使用 Memcache、Redis等专门的缓存服务,把计算的中间结果和资源存储在内存或者硬盘里

Web 服务器首先检查缓存系统,若是有数据就当即返回给客户端

另外,CDN 的网络加速功能就是创建在缓存的基础之上的,能够这么说,若是没有缓存,那就没有 CDN。

利用好缓存功能的关键是理解它的工做原理,为每一个资源都添加 ETag 和 Last-modified字段,再用 Cache-Control、Expires 设置好缓存控制属性。

其中最基本的是 max-age 有效期,标记资源可缓存的时间。对于图片、CSS 等静态资源能够设置较长的时间,好比一天或者

一个月,对于动态资源,除非是实时性很是高,也能够设置一个较短的时间,好比 1 秒或者 5 秒。这样一旦资源到达客户端,就

会被缓存起来,在有效期内都不会再向服务器发送请求。

相关文章
相关标签/搜索