一、定义
网站响应时间是指系统响应请求所花费的时间。 通俗的讲,就是我们在浏览器中输入网址并按下回车键,直到浏览器将网站内容呈现给用户的这段时间。 网站响应时间越短越好,因为网站页面打开的速度越快,我们的用户访问网站或我们的服务器的速度就越快。 一般一个网站的响应时间可以维持在100~1000ms,1s=1000ms。 打开速度越快,用户体验就越好。
响应时间并不直接反映网站的性能,但在一定程度上反映了网站系统的处理能力,也是用户最直观的感受。 如果网站响应时间过长,比如超过10秒,用户的流失率会大大增加,所以将响应时间控制在一定范围内是提升用户体验的第一要素。
2. 解决方案
当用户请求网站数据时,实际上是发送了一个 HTTP 请求,宏观上可以分为两部分:
在 HTTP 请求到达目标网站服务器之前;
HTTP 请求到达目标网站服务器后。
如果我们想提高网站的响应时间,我们本质上是在提高数据返回的速度。 说白了就是在请求数据的过程中,我们需要提高每一步的速度,这样整体的响应时间就会缩短。
数据离用户越近,响应时间越快。
客户
客户端是发起网站请求的来源。 事实上,这个来源可以强加某些策略来大大减少某些数据的获取时间。 最常用的一种是缓存。 一些常用且很少变化的资源缓存在客户端,不仅可以缩短获取资源的时间,还可以在很大程度上减轻服务器的压力。 比如一些图片、CSS、JS文件,甚至一些界面数据或者整个网页内容都可以缓存在客户端。 此外,HTTP请求的合并还可以减少对服务器的请求数量,可以在一定程度上缩短请求的响应时间。
缓存
当并发请求达到一定程度时,瓶颈多发生在DB层面。 无论数据库如何优化,总会有一个上限。 为了避免频繁查询数据库的瓶颈,缓存诞生了。 在访问数据库之前添加了一个缓存层。 当然,这里使用的缓存方案的数据响应时间要比数据库小很多,比如常用的Redis和Memcache,但是这些第三方缓存组件还是需要走网络的,还是很多的 比进程的内部缓存慢。
现在流行的设计在网站层和服务层都有缓存策略,但是要缓存的数据和策略不同,但最终目的是为了加快请求的响应速度。 当然,加入缓存后,需要仔细设计数据的一致性。 如果数据不一致,程序员可能要承担责任。 缓解数据库压力并不是引入缓存的唯一因素。
CDN 加速
一些小厂可能不会用CDN,但是CDN带来的加速还是很客观的。 CDN依托部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,让用户就近获取想要的内容,减少网络拥塞,提高用户访问响应速度和命中率。 CDN就是把离用户最近的数据返回给用户。
三、写在最后
程序异步实际上并没有提高响应时间,但它对提高吞吐量有很大帮助。TG: @Sp_server