高并发情况下如何缩短网站响应时间?

wanxia7963 2022-5-23 20

一、定义

网站响应时间是指系统对请求作出响应的时间。通俗来讲,就是我们把网址输入进浏览器然后敲回车键开始一直到浏览器把网站的内容呈现给用户的这段时间。网站响应时间越短越好,因为网站页面打开速度越快,就意味着我们的用户可以更快地访问站点或者我们的服务器。一般网站的响应时间保持在100~1000ms即可,1s=1000ms,打开速度越快对用户体验度越好。

响应时间并不能直接反映网站性能的高低,但是在一定程度上反应了网站系统的处理能力,也是给用户最直观的感受。如果网站的响应时间过长,比如10秒以上,用户的流失率会大大增加,所以把响应时间控制在一定范围内是提高用户体验度的第一要素。

二、解决方案

当用户请求一个网站数据的时候,实际上是发送了一个HTTP请求,在宏观上可以分为两个部分:

HTTP请求到达目标网站服务器之前;

HTTP请求到达目标网站服务器之后。

我们要想缩短一个网站的响应时间,本质上是提高数据的返回速度,说的直白一点就是要把请求数据过程中的各个步骤提高速度,这样整体下来响应时间就会缩短。

把数据放在离用户越近的地方响应时间越快

客户端

客户端是发起一个网站请求的源头,其实这个源头可以施加一定的策略来大大缩短某些数据的获取时间。其中最为常用的就是缓存,一些常用的、很少变动的资源缓存在客户端,不但能缩短获取资源的时间,而且在很大程度上能减轻服务端的压力。比如一些图片、CSS、JS文件,甚至一些接口的数据或者整个网页内容都可以在客户端做缓存。另外HTTP请求的合并也可以减少对服务端的请求次数,在一定程度上可以缩短请求的响应时间。

缓存

当并发的请求到达一定程度,瓶颈大部分情况下发生在DB层面,甚至DB无论怎么优化总有上限。为了避免频繁查询数据库产生瓶颈,诞生了缓存。在访问数据库之前加入了缓存层,当然这里的缓存采用的方案在数据的响应时间上要比数据库小很多,比如常用的Redis、Memcache,但是这些第三方的缓存组件还是要走网络,比起进程内的缓存还是要慢的多。

现在一般流行的设计在网站层和服务层都有缓存策略,只不过缓存的数据和策略有所不同,但是最终目的都是为了加快请求的响应。当然加了缓存之后,数据的一致性需要仔细设计才可以,如果发生数据不一致的情况,程序员可能要背锅了。

缓解数据库压力并不是引入缓存的唯一因素。

CDN加速

一些小厂可能用不到CDN,但是CDN带来的加速还是很客观的。CDN依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN就是把离用户最近的数据返回给用户。

三、写在最后

程序异步化其实并不能缩短响应时间,但是对提高吞吐量有很大作用+TG @wanxia7963


最新回复 (0)
返回