深入理解HTTP协议及原理分析之缓存
3.2 缓存的实现原理
3.2.1什么是Web缓存
WEB缓存(cache)位于Web服务器和客户端之间。
缓存会根据请求保存输出内容的副本,例如html页面,图片,文件,当下一个请求来到的时候:如果是相同的URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发送请求。
HTTP协议定义了相关的消息头来使WEB缓存尽可能好的工作。
3.2.2缓存的优点
减少相应延迟:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让web服务器看上去相应更快。
减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。
3.2.3与缓存相关的HTTP扩展消息头
Expires:指示响应内容过期的时间,格林威治时间GMT
Cache-Control:更细致的控制缓存的内容
Last-Modified:响应中资源最后一次修改的时间
ETag:响应中资源的校验值,在服务器上某个时段是唯一标识的。
Date:服务器的时间
If-Modified-Since:客户端存取的该资源最后一次修改的时间,同Last-Modified。
If-None-Match:客户端存取的该资源的检验值,同ETag。
3.2.4客户端缓存生效的常见流程
服务器收到请求时,会在200OK中回送该资源的Last-Modified和ETag头,客户端将该资源保存在cache中,并记录这两个属性。当客户端需要发送相同的请求时,会在请求中携带If-Modified-Since和If-None-Match两个头。两个头的值分别是响应中Last-Modified和ETag头的值。服务器通过这两个头判断本地资源未发生变化,客户端不需要重新下载,返回304响应。常见流程如下图所示:
3.2.5 Web缓存机制
HTTP/1.1中缓存的目的是为了在很多情况下减少发送请求,同时在许多情况下可以不需要发送完整响应。前者减少了网络回路的数量;HTTP利用一个“过期(expiration)”机制来为此目的。后者减少了网络应用的带宽;HTTP用“验证(validation)”机制来为此目的。
HTTP定义了3种缓存机制:
1)Freshness:允许一个回应消息可以在源服务器不被重新检查,并且可以由服务器和客户端来控制。例如,Expires回应头给了一个文档不可用的时间。Cache-Control中的max-age标识指明了缓存的最长时间;
2)Validation:用来检查以一个缓存的回应是否仍然可用。例如,如果一个回应有一个Last-Modified回应头,缓存能够使用If-Modified-Since来判断是否已改变,以便判断根据情况发送请求;
3)Invalidation: 在另一个请求通过缓存的时候,常常有一个副作用。例如,如果一个URL关联到一个缓存回应,但是其后跟着POST、PUT和DELETE的请求的话,缓存就会过期。
3.3 断点续传和多线程下载的实现原理
HTTP协议的GET方法,支持只请求某个资源的某一部分;
206 Partial Content 部分内容响应;
Range 请求的资源范围;
Content-Range 响应的资源范围;
在连接断开重连时,客户端只请求该资源未下载的部分,而不是重新请求整个资源,来实现断点续传。
分块请求资源实例:
Eg1:Range: bytes=306302- :请求这个资源从306302个字节到末尾的部分;
Eg2:Content-Range: bytes 306302-604047/604048:响应中指示携带的是该资源的第306302-604047的字节,该资源共604048个字节;
客户端通过并发的请求相同资源的不同片段,来实现对某个资源的并发分块下载。从而达到快速下载的目的。目前流行的FlashGet和迅雷基本都是这个原理。
多线程下载的原理:
下载工具开启多个发出HTTP请求的线程;
每个http请求只请求资源文件的一部分:Content-Range: bytes 20000-40000/47000;
合并每个线程下载的文件。
3.4 https通信过程
3.4.1什么是https
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容请看SSL。
见下图:
https所用的端口号是443。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP是一种在互联网应用广泛的编程语言,而HTTP协议是支撑互联网的重要协议。对于初学者而言,学习HTTP协议是入门PHP编程的重要一步。本文将从HTTP协议的基本概念、请求方法、状态码和实际应用等方面介绍HTTP协议的具体内容,以帮助初学者更好地理解和掌握HTTP协议,从而更有效地开发PHP应用程序。HTTP协议的基本概念HTTP协议是HyperText

深入解读HTTP协议状态码:为什么状态码对于网站开发至关重要随着互联网的迅速发展,网站开发变得越来越重要。在网站开发中,HTTP协议扮演着至关重要的角色。它定义了浏览器和服务器之间的通信规范,通过请求和响应来传输数据。而HTTP状态码就是在这个过程中的一部分,用来表示请求的处理情况。本文将深入解读HTTP协议状态码的作用和意义。HTTP状态码是一个三位数的数

HTTP协议是现代互联网中最为常用的应用层协议之一,它基于客户端-服务器模型,用于在客户端和服务器之间传输数据。HTTP协议通过请求和响应的方式来进行通信,而消息头是HTTP协议中非常重要的一部分,它用于在请求和响应中传递元数据。本文将探讨HTTP协议消息头的作用。首先,HTTP协议消息头可以用来传递请求的相关信息。在客户端向服务器发送请求时,消息头中的字段

Nginx反向代理服务器是一种功能强大的Web服务器,它不仅可以处理HTTP请求和响应,还能提供HTTP协议支持和性能优化。在本文中,我们将详细解读Nginx反向代理服务器的HTTP协议支持和性能优化,并提供一些代码示例。一、HTTP协议支持请求处理Nginx反向代理服务器可以接收来自客户端的HTTP请求,并将其转发给后端服务器。对于每个请求,Nginx会进

Workerman开发:如何实现基于HTTP协议的批量文件处理系统,需要具体代码示例随着互联网和数字化技术的发展,数据处理变得越来越重要,尤其在企业中。有时候,我们需要处理大量的文件,例如图片、视频、音频等等。这时候,如果手工操作,不仅费时费力,而且易出错。如何实现批量文件处理系统就是本文要探讨的话题。Workerman是一个PHP开发的高性能的socket

Workerman开发:如何实现基于HTTP协议的Web服务器,需要具体代码示例引言:随着互联网的快速发展,Web开发变得越来越重要。而提供Web服务的基础就是Web服务器。Workerman是一款高性能的PHP开发框架,不仅可以用于开发网络通信服务器,还可以实现基于HTTP协议的Web服务器。本文将介绍利用Workerman开发一个简单的HTTPWeb服

PHP是一种广泛使用的服务器端脚本语言,用来构建Web应用程序。在Web应用程序中,HTTP协议和状态码是必需的基础知识,在本文中我们将探讨PHP中HTTP协议和状态码的基础知识。HTTP协议是一个用于传输超文本的协议,在Web开发中被广泛使用。通过HTTP协议,Web浏览器和Web服务器之间通过互联网进行交互,Web浏览器向Web服务器发送HTTP请求,W

403状态码解析:如何应对HTTP协议中的禁止访问错误引言:在网络世界中,当我们浏览网页或发送请求时,常常会遇到各种各样的错误。其中之一就是403状态码,表示禁止访问错误。本文将对403错误进行解析,并提供一些应对策略,帮助读者更好地处理这类问题。一、403状态码的含义和原因403状态码是HTTP协议中的一个客户端错误状态码,它表示服务器理解客户端的请求,但
