🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
1.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。 2.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型content-Type加以标记 3.无链接:无连接的含义是限制每次连接只处理一次请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 4.无状态:HTTP协议是无状态协议,无状态是指协议对事务处理没有记忆能力,意味着如果后续处理需要前面的信息,则必须被重传,这可能导致每次连接的数据量增大,另一方面不需要前面信息时,它的应答就较快。 ***** ### **为什么HTTP是无连接的?** HTTP协议产生于互联网,因此服务器需要处理同时面向全世界数十万、上百万客户端的网页访问,但每个客户端(即浏览器)与服务器之间交换数据的间歇性较大(即传输具有突发性、瞬时性),并且网页浏览的联想性、发散性导致两次传送的数据关联性很低,如果按照上面的方式则需要在服务器端开的进程和句柄数目都是不可接受的,象paranoid945所说的,大部分通道实际上会很空闲、无端占用资源。 因此HTTP的设计者有意利用这种特点将协议设计为**请求时建连接、请求完释放连接,以尽快将资源释放出来服务其他客户端**。 随着时间的推移,html页面变得复杂了,里面可能嵌入了很多图片,这时候每次访问图片都需要建立一次tcp连接就显得低效了。因此Keep-Alive被提出用来解决效率低的问题。 这样一来,客户端和服务器之间的HTTP连接就会被保持,不会断开(超过Keep-Alive规定的时间,意外断电等情况除外),当客户端发送另外一个请求时,就使用这条已经建立的连接。 > Keep-Alive 功能(长连接):使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive 功能避免了建立或者重新建立连接。但是,对于负担较重的网站来说,这里存在另外一个问题:虽然为客户保留打开的连接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。 ### **为什么HTTP是无状态的?** 无状态是指服务器不知道客户端是什么状态.,这意味着每个请求都是独立的,Keep-Alive没能改变这个结果。 **优点**:在服务器不需要先前信息时它的**应答就较快**,简化了服务器的设计,使服务器更容易支持大量并发的HTTP请求。 **缺点**:每次请求会传输大量重复的内容信息。 **原因**:客户端与服务器进行动态交互的 Web 应用程序出现之后,HTTP 无状态的特性严重阻碍了这些应用程序的实现,毕竟交互是需要承前启后的,简单的购物车程序也要知道用户到底在之前选择了什么商品。于是,两种用于保持 HTTP 连接状态的技术就应运而生了,一个是 Cookie,而另一个则是 Session。