首页 php教程 PHP开发 深入理解HTTP协议及原理分析之缓存

深入理解HTTP协议及原理分析之缓存

Dec 12, 2016 am 11:26 AM
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响应。常见流程如下图所示:

20161031140826605.jpg

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。

见下图:

20161031140826605.jpg

https所用的端口号是443。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

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

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PHP入门指南:HTTP协议 PHP入门指南:HTTP协议 May 22, 2023 am 08:06 AM

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

深入探讨HTTP协议状态码的重要性 深入探讨HTTP协议状态码的重要性 Feb 25, 2024 pm 11:06 PM

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

作用解析:HTTP协议消息头 作用解析:HTTP协议消息头 Feb 25, 2024 am 11:06 AM

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

详细解读Nginx反向代理服务器的HTTP协议支持和性能优化 详细解读Nginx反向代理服务器的HTTP协议支持和性能优化 Aug 04, 2023 pm 01:20 PM

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

Workerman开发:如何实现基于HTTP协议的批量文件处理系统 Workerman开发:如何实现基于HTTP协议的批量文件处理系统 Nov 07, 2023 pm 12:16 PM

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

Workerman开发:如何实现基于HTTP协议的Web服务器 Workerman开发:如何实现基于HTTP协议的Web服务器 Nov 07, 2023 am 10:51 AM

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

PHP中的HTTP协议和状态码 PHP中的HTTP协议和状态码 May 11, 2023 pm 04:28 PM

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

403状态码分析:应对HTTP错误中的禁止访问情况 403状态码分析:应对HTTP错误中的禁止访问情况 Feb 18, 2024 pm 05:44 PM

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

See all articles