基于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服务器断开连接。

目录
相关文章
|
5天前
|
网络协议 网络安全 数据安全/隐私保护
基于Django的电子商务网站开发(连载4)
本文首先介绍了四种安装Django的方法:使用pip安装、通过tar.gz文件安装、使用whl文件安装以及从GitHub上安装。接着,文章对HTTP协议进行了详细介绍,包括其历史背景、不同版本的特点以及工作原理。特别是在HTTP的工作原理部分,通过对比HTTP与HTTPS的协议栈图,展示了它们在网络中的具体位置及差异。
24 4
基于Django的电子商务网站开发(连载4)
|
5天前
|
存储 前端开发 数据库
基于Django的电子商务网站开发(连载10)
本节介绍了用户信息模块,涵盖用户注册、登录、信息展示及密码修改功能。重点描述了用户注册流程,包括urls.py配置、forms.py中的表单定义及views.py中的处理逻辑。通过详细代码示例展示了如何实现用户信息验证与存储,并提供了注册页面的模板设计。特别强调了使用`request.POST.get`方法以支持后续接口测试。图3-2展示了实际的注册页面效果。
15 2
基于Django的电子商务网站开发(连载10)
|
5天前
|
存储 开发框架 网络安全
基于Django的电子商务网站开发(连载5)
HTTP请求包括八种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT,常用的是GET和POST。请求结构分为请求行、请求头和请求正文。HTTP响应则包含状态码,如200表示成功,404表示未找到,500表示服务器内部错误。响应同样分为响应行、响应头和响应正文。状态码按类别分为1XX(指示信息)、2XX(成功)、3XX(重定向)、4XX(客户端错误)和5XX(服务器错误)。
19 2
基于Django的电子商务网站开发(连载5)
|
5天前
|
数据库 数据安全/隐私保护 Python
基于Django的电子商务网站开发(连载8)
本章节详细介绍了电子商务网站的实现,包括用户信息模块(注册、登录、信息展示及密码修改),商品信息模块(维护、分页显示、模糊查询及详情展示),购物车模块(商品显示、添加、删除及数量修改),送货地址模块(显示、添加、修改及删除),订单模块(显示、删除),以及订单支付模块等功能需求和实现细节。
16 4
|
5天前
|
开发框架 人工智能 Java
基于Django的电子商务网站开发(连载2)
本章节介绍了基于Python的Web开发框架Django的学习前提,即Python基础和HTTP协议的基本知识。首先概述了Python语言的特点和支持领域,强调了其简洁性和易读性。接着讲述了Python的历史及其创始人Guido van Rossum的故事,说明Python如何从ABC语言发展而来,并成为受欢迎的编程语言之一。此外,还提到了Python在科学计算和教育领域的广泛应用。
14 3
|
测试技术 Python
基于Django的电子商务网站开发(连载26)
基于Django的电子商务网站开发(连载26)
69 0
基于Django的电子商务网站开发(连载26)
|
XML 测试技术 数据库
基于Django的电子商务网站开发(连载34)
基于Django的电子商务网站开发(连载34)
56 0
基于Django的电子商务网站开发(连载34)
|
安全 测试技术 Python
基于Django的电子商务网站开发(连载39)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
66 0
基于Django的电子商务网站开发(连载39)
|
存储 安全 前端开发
基于Django的电子商务网站开发(连载37)
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript, 主文件是:zentao.py 。bugreport是禅道,script是python3+selenium 3,按照规则在禅道上书写的bugreport可由zentao.py程序生成py测试脚本。
140 0
基于Django的电子商务网站开发(连载37)
|
测试技术 Python
基于Django的电子商务网站开发(连载12)
基于Django的电子商务网站开发(连载12)
60 0
基于Django的电子商务网站开发(连载12)