
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
http的学习与应用是每一位web前端编程开发程序员都应该熟练掌握的一个编程知识点,而本文我们就通过案例分析来简单了解一下,http连接与缓存基础知识分享。
一、HTTP持久连接
客户端发送一系列请求给服务器,如果服务器与客户端对每个请求/响应对都经过一个单独的TCP连接发送,则称为非持续连接,也称为短连接;如果经过相同的TCP连接发送,则称为持续连接,也称为长连接。
比如打开一个Web页面时,假设该页面含有一个HTML基础文件和2张图片,如果客户端与服务器通过同一个TCP连接来获取这3个数据,则为持续连接,如果通过建立3次不同的TCP连接,则为非持续连接。
非持续连接的缺点:
每次建立连接需要三次握手过程,导致总的请求响应时间变长。当然也不是绝对的,如果多个连接可以并行请求,总响应时间可能变短,比如Chrome浏览器为了提升加载速度,可以同时打开6个并行连接,但多个并行连接会加重Web服务器负担。
必须为每一个请求的对象建立和维护一个全新的连接,而每一个连接都需要客户和服务器分配TCP的缓冲区和保持TCP变量,使得Web服务器存在严重的负担,因为一台Web服务器可能同时服务于数以百计不同的客户的请求。
HTTP(1.1及之后)默认采用持续连接方式,但也可配置成非持续连接方式。在报文中使用Connection字段来表示是否使用持久连接。
如果Connection字段的值为keep-alive,则表明此连接为持久连接,HTTP1.1及以后可默认不写。
如果Connection字段的值为close,则表明要关闭连接。
注意:持久连接不是永久连接,一般在一个可配置的超时间隔后,如果此连接仍未被使用,HTTP服务器就会关闭该连接。
二、HTTP缓存
对于一些短时间内不会产生变化的资源,客户端(浏览器)可以在一次请求后将服务器响应的资源缓存在本地,之后直接读取本地的数据,而不必再重新发送请求。
我们经常会接触到『缓存』这一概念,比如由于内存和CPU之间速度差距较大,为了进一步提升电脑性能,于是设计了L1缓存、L2缓存等,让CPU先从缓存中取数据,如果取不到,再去内存取。
又比如在后端开发中,由于数据库一般存储在硬盘上,读取速度较慢,于是可能会采用Redis等内存数据库作为缓存,先去Redis中取数据,如果取不到,再去数据库中取。
再比如在操作系统中,由于页表进行地址转换的速度较慢,于是有了TLB快表,当需要进行逻辑地址到物理地址的转换时,先去查询速度更快的TLB快表,如果查不到,再去查询页表,此时TLB快表就是一种缓存。
缓存的主要目的在于提升查询速度,一般逻辑如图所示。
同样,在HTTP设计中也有缓存的概念,主要是为了加快响应速度,HTTP缓存的实现依赖于请求报文和响应报文中的一些字段,分为强缓存和协商缓存。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。