Maison 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。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Premiers pas avec PHP : protocole HTTP Premiers pas avec PHP : protocole HTTP May 22, 2023 am 08:06 AM

PHP est un langage de programmation largement utilisé sur Internet et le protocole HTTP est un protocole important prenant en charge Internet. Pour les débutants, l’apprentissage du protocole HTTP est une étape importante pour débuter avec la programmation PHP. Cet article présentera le contenu spécifique du protocole HTTP à partir des concepts de base, des méthodes de requête, des codes d'état et des applications pratiques du protocole HTTP pour aider les débutants à mieux comprendre et maîtriser le protocole HTTP et à développer plus efficacement des applications PHP. Concepts de base du protocole HTTP Le protocole HTTP est HyperText

Une discussion approfondie sur l'importance des codes d'état du protocole HTTP Une discussion approfondie sur l'importance des codes d'état du protocole HTTP Feb 25, 2024 pm 11:06 PM

Une interprétation approfondie des codes d'état du protocole HTTP : pourquoi les codes d'état sont cruciaux pour le développement de sites Web. Avec le développement rapide d'Internet, le développement de sites Web est devenu de plus en plus important. Dans le développement de sites Web, le protocole HTTP joue un rôle essentiel. Il définit les spécifications de communication entre les navigateurs et les serveurs pour transférer des données via des requêtes et des réponses. Le code d'état HTTP fait partie de ce processus et est utilisé pour indiquer le traitement de la demande. Cet article fournira une explication détaillée du rôle et de la signification des codes d'état du protocole HTTP. Le code d'état HTTP est un nombre à trois chiffres

Analyse de fonction : en-tête de message du protocole HTTP Analyse de fonction : en-tête de message du protocole HTTP Feb 25, 2024 am 11:06 AM

Le protocole HTTP est l'un des protocoles de couche application les plus couramment utilisés sur l'Internet moderne. Il est basé sur le modèle client-serveur et est utilisé pour transmettre des données entre le client et le serveur. Le protocole HTTP communique via des requêtes et des réponses, et l'en-tête du message est une partie très importante du protocole HTTP, qui est utilisé pour transmettre des métadonnées dans les requêtes et les réponses. Cet article explorera le rôle des en-têtes du protocole HTTP. Premièrement, les en-têtes du protocole HTTP peuvent être utilisés pour transmettre des informations relatives à la requête. Lorsque le client envoie une requête au serveur, les champs de l'en-tête du message

Interprétation détaillée de la prise en charge du protocole HTTP et de l'optimisation des performances du serveur proxy inverse Nginx Interprétation détaillée de la prise en charge du protocole HTTP et de l'optimisation des performances du serveur proxy inverse Nginx Aug 04, 2023 pm 01:20 PM

Le serveur proxy inverse Nginx est un serveur Web puissant qui gère non seulement les requêtes et les réponses HTTP, mais fournit également la prise en charge du protocole HTTP et l'optimisation des performances. Dans cet article, nous expliquerons en détail la prise en charge du protocole HTTP et l'optimisation des performances du serveur proxy inverse Nginx et fournirons quelques exemples de code. 1. Le protocole HTTP prend en charge le traitement des requêtes. Le serveur proxy inverse Nginx peut recevoir les requêtes HTTP des clients et les transmettre au serveur back-end. Pour chaque requête, Nginx

Développement Workerman : Comment implémenter un système de traitement de fichiers batch basé sur le protocole HTTP Développement Workerman : Comment implémenter un système de traitement de fichiers batch basé sur le protocole HTTP Nov 07, 2023 pm 12:16 PM

Workerman Development : Comment mettre en œuvre un système de traitement de fichiers batch basé sur le protocole HTTP, des exemples de codes spécifiques sont nécessaires Avec le développement d'Internet et de la technologie numérique, le traitement des données est devenu de plus en plus important, notamment dans les entreprises. Parfois, nous devons traiter un grand nombre de fichiers, tels que des images, des vidéos, des audios, etc. À l’heure actuelle, l’opération manuelle est non seulement longue et laborieuse, mais également sujette aux erreurs. Comment mettre en œuvre un système de traitement de fichiers par lots est le sujet qui sera abordé dans cet article. Workerman est un socket haute performance développé en PHP

Protocole HTTP et codes d'état en PHP Protocole HTTP et codes d'état en PHP May 11, 2023 pm 04:28 PM

PHP est un langage de script côté serveur largement utilisé pour créer des applications Web. Dans les applications Web, le protocole HTTP et les codes d'état sont des connaissances de base nécessaires. Dans cet article, nous explorerons les connaissances de base du protocole HTTP et des codes d'état en PHP. Le protocole HTTP est un protocole de transmission d'hypertexte et est largement utilisé dans le développement Web. Grâce au protocole HTTP, le navigateur Web et le serveur Web interagissent via Internet. Le navigateur Web envoie une requête HTTP au serveur Web W.

Développement Workerman : Comment implémenter un serveur Web basé sur le protocole HTTP Développement Workerman : Comment implémenter un serveur Web basé sur le protocole HTTP Nov 07, 2023 am 10:51 AM

Développement Workerman : Comment implémenter un serveur Web basé sur le protocole HTTP, des exemples de code spécifiques sont nécessaires Introduction : Avec le développement rapide d'Internet, le développement Web est devenu de plus en plus important. La base de la fourniture de services Web est le serveur Web. Workerman est un framework de développement PHP haute performance qui peut non seulement développer des serveurs de communication réseau, mais également implémenter des serveurs Web basés sur le protocole HTTP. Cet article présentera l'utilisation de Workerman pour développer un service Web HTTP simple.

Analyse du code d'état 403 : gestion des situations d'accès interdit dans les erreurs HTTP Analyse du code d'état 403 : gestion des situations d'accès interdit dans les erreurs HTTP Feb 18, 2024 pm 05:44 PM

Analyse du code d'état 403 : Comment gérer les erreurs interdites dans le protocole HTTP Introduction : Dans le monde en ligne, lorsque nous parcourons des pages Web ou envoyons des requêtes, nous rencontrons souvent diverses erreurs. L'un d'eux est le code d'état 403, qui indique une erreur d'accès interdit. Cet article analysera l'erreur 403 et fournira quelques stratégies d'adaptation pour aider les lecteurs à mieux gérer ces problèmes. 1. Signification et raisons du code d'état 403 Le code d'état 403 est un code d'état d'erreur client dans le protocole HTTP. Il indique que le serveur comprend la demande du client, mais.

See all articles