基于Django的电子商务网站开发(连载6)

简介: HTTP协议最初设计为无连接协议,每次请求完成后断开连接以节省资源。但随着网页复杂度增加,频繁建立连接效率低下,因此HTTP 1.1引入了Keep-Alive机制,维持客户端与服务器间的连接,减少重复建立连接的开销。然而,不同HTML页面间无法通过此机制保持连接。此机制在提升效率的同时,也可能对高负载网站的性能产生影响。

1.3.4 HTTP的连接性

   通信中无连接的含义是限制每次连接只处理一个请求。服务器处理完客户端的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。在日常生活中可以认为普通邮件(是Mail,非Email)是无连接的,而打电话是有连接的。当发送邮件的时候,虽然信封上有收件人的地址和邮编,但是邮件有无收到,不通过其他方式,是不可能知道的,所以无连接的通信是不可靠的;而打电话是有连接的,正常情况包括拨号,应答和挂断,如果对方正在通话显示忙音,如果对方不在现场则显示无人应答,所以有连接的通信是可靠的。

HTTP协议是无连接的,这是由于早期HTTP 协议产生的时候,服务器需要同时处理面向全世界数十万、甚至上百万个客户端的网页访问,但是每个浏览器与服务器之间交换的间歇性是比较大的,并且网页浏览的发散性导致了两次传送的数据关联性是很低的,大部分的通道实际上会很空闲、无端占用资源,所以HTTP的设计者有意利用这种特点将协议设计为请求时建连接、请求完释放连接,即面向无连接的,以尽快将资源释放出来服务给其他客户端。

  但是随着时间的推移,网页变得越来越复杂,网页里面有很多图片、视频等文件,这种情况和如果每次访问都需要建立一次TCP连接就显得很低效。因此,Keep-Alive在HTTP 1.1中被提出用来解决这个低效的问题。

Keep-Alive 可以使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive能够避免了建立或者重新建立连接。大部分Web 服务器,包括Django、IIS 和 Apache,都支持 HTTPKeep-Alive。对于提供静态内容的网站来说,这个功能通常是非常有用的。但是,对于负担较重的网站来说,这里存在另外一个问题,就是对性能的影响。当Web服务器和应用服务器在同一台机器上运行时,Keep-Alive功能对资源利用的影响尤其突出。

有了Keep-Alive,客户端和服务器之间的HTTP连接就会被保持,不会断开,当客户端发送另外一个请求时,就使用这条已经建立的连接。

图1-11是基于HTTP 1.0的页面请求。

(1)浏览器与WEB服务器建立连接。

(2)浏览器向WEB服务器发送HTTP网页1的请求。

(3)WEB服务器向浏览器返回网页1的响应消息。

(4)浏览器与WEB服务器断开连接。

(5)浏览器与WEB服务器建立连接。

(6)浏览器向WEB服务器发送图片1.1请求。

(7)WEB服务器向浏览器返回图片1.1的响应消息。

(8)浏览器与WEB服务器断开连接。

(n)浏览器与WEB服务器建立连接。

(n+1)浏览器向WEB服务器发送HTTP网页2的请求。

(n+2)WEB服务器向浏览器返回网页2的响应消息。

(n+3)浏览器与WEB服务器断开连接。

(n+4)浏览器与WEB服务器建立连接。

(n+5)浏览器向WEB服务器发送图片2.1请求。

(n+6)WEB服务器向浏览器返回图片2.1的响应消息。

(n+7)浏览器与WEB服务器断开连接。

…                          

图1-11基于HTTP 1.0的页面请求

图1-12是基于HTTP 1.1的页面请求,在这里加入了。HTTPKeep-Alive。

图1-12基于HTTP 1.0的页面请求

(1)浏览器与WEB服务器建立连接。

(2)浏览器向WEB服务器发送HTTP网页1的请求。

(3)WEB服务器向浏览器返回网页1的响应消息。

(4)浏览器向WEB服务器发送图片1.1请求。

(5)浏览器向WEB服务器发送图片1.2请求。

(6)浏览器向WEB服务器发送图片1.3请求。

(7)WEB服务器向浏览器返回图片1.1的响应消息。

(8)WEB服务器向浏览器返回图片1.2的响应消息。

(9)WEB服务器向浏览器返回图片1.3的响应消息。

(10)浏览器与WEB服务器断开连接。(注意:不同的HTML页面不能通过HTTPKeep-Alive保持连接。)

(11)浏览器与WEB服务器建立连接。

(12)浏览器向WEB服务器发送HTTP网页2的请求。

(13)WEB服务器向浏览器返回网页2的响应消息。

(14)浏览器向WEB服务器发送图片2.1请求。

(15)浏览器向WEB服务器发送图片2.2请求。

(16)WEB服务器向浏览器返回图片2.1的响应消息。

(17)WEB服务器向浏览器返回图片2.2的响应消息。

(18)浏览器与WEB服务器断开连接。

目录
相关文章
|
机器学习/深度学习 数据采集 分布式计算
阿里云机器学习平台PAI介绍|学习笔记
快速学习阿里云机器学习平台PAI介绍
5146 0
阿里云机器学习平台PAI介绍|学习笔记
|
Android开发
08. 【Android教程】相对布局 RelativeLayout
08. 【Android教程】相对布局 RelativeLayout
391 0
|
云安全 运维 架构师
阿里云ACE认证含金量高不高?考试内容难不难?
IT行业可以说是现在最热门的行业之一,很多人都想在这一行有所建树,于是他们就会选择考取阿里云人才认证来帮助自己提升技能、升职加薪。
1601 1
阿里云ACE认证含金量高不高?考试内容难不难?
Echarts柱状图x轴刻度间隔显示不全/x轴文字倾斜
Echarts柱状图x轴刻度间隔显示不全/x轴文字倾斜
2650 0
|
机器学习/深度学习 人工智能 算法
Nature子刊:大脑学习也靠反向传播?Hinton等用新一代反向传播算法模拟神经网络
反向传播作为一种基本负反馈机制,极大地推动了深度学习神经网络的发展。那么,反向传播也存在于人脑的运行方式中吗?反向传播的发明者Geoffery Hinton发Nature子刊告诉我们:人脑中存在类似于反向传播的神经机制,我用一种新算法类比出来了!
990 0
Nature子刊:大脑学习也靠反向传播?Hinton等用新一代反向传播算法模拟神经网络
|
分布式计算 Spark
|
机器学习/深度学习 传感器 算法
【控制】基于遗传算法优化模糊控制附Matlab代码
【控制】基于遗传算法优化模糊控制附Matlab代码
|
存储 SQL 分布式计算
阿里云Lindorm联合智臾科技发布金融高频交易数据量化分析与处理方案
阿里云原生多模数据库Lindorm联合浙江智臾DolphinDB发布金融高频交易数据量化分析与处理方案,通过云原生方式整合DolphinDB实时高效的数据处理能力和Lindorm多模海量数据融合存储分析能力,集成了功能强大的编程语言和高容量高速度的流数据分析系统,为金融场景海量时序数据的量化分析计算提供一站式解决方案。方案操作简单,可扩展性强,具有良好的容错能力及优异的多用户并发访问能力。
2846 0
阿里云Lindorm联合智臾科技发布金融高频交易数据量化分析与处理方案
|
Linux 数据库
连 QPS,TPS,RT,PV,UV 这些指标都不知道是什么意思,还敢说自己懂高并发?
连 QPS,TPS,RT,PV,UV 这些指标都不知道是什么意思,还敢说自己懂高并发?
712 0
|
Java 测试技术 Maven
新手向,十分钟快速创建 Spring Cloud 项目
本文为新手向教程,帮助大家快速入门 Spring Cloud 开发,也作为「跟我学 Spring Cloud Alibaba」系列的补充文章
4364 0