HTTP缓存协议实战

Posted 魏小言

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP缓存协议实战相关的知识,希望对你有一定的参考价值。

文章目录

HTTP缓存协议实战

一、什么是缓存

缓存,又称作Cache,我们把临时存储数据的地方叫做缓存池,缓存池里面放的数据就叫做缓存。当用户需要使用这些数据,首先在缓存中寻找,如果找到了则直接使用。如果找不到,则再去其他数据源中查找。

二、为什么要使用缓存技术

缓存的本质就是用空间换时间,以临时存储的数据暂时代替数据源中读取最新的数据,这种方式带来的好处在不同的场景下是不一样的。

举个例子:

当我们需要喝水时,我们会拿出一个水杯,去水龙头接一杯水来喝。大家可以思考一下,为什么用杯子来喝水,而不是直接用嘴巴在水龙头接水喝。

用杯子喝水确实存在一些既有的问题,比如杯子里面的水容易变凉,而水龙头流出的水确是恒温的。我们可以想象一下,公司里的同事们排队在水龙头下面喝水的场面,确实有点滑稽,我们宁愿接受杯子里的水会变凉这个既有问题。

用杯子喝水有以下几个优势:

用杯子喝水解决了总是要去找水龙头的问题,因为杯子可以一次接更多的水。

用杯子喝水更不容易洒出来,不容易浪费水。

用杯子喝水比趴在水龙头下喝水更优雅。

我们把杯子看成一个缓存池,杯中的水看成缓存,我们接受了杯中水会变凉的问题,相当于牺牲了数据的实时性。把这些优势换一个方式来描述,于是使用缓存的优势变成了下面几个:

降低了系统压力;

节省了资源消耗;

优化用户体验。

三、HTTP缓存的作用

网络的其中一个特点就是不稳定性,很多用户受到网速慢的困扰。

服务器在大量用户访问的场景下实时计算数据也很容易产生瓶颈,导致服务变慢。从缓存技术具备的优势来看,很适合解决网络服务不稳定的问题。

四、HTTP缓存协议

协议是沟通过程中双方都遵守并且使用的一种规则。举个栗子,客户端和服务器两位大兄弟在新款机型问题上进行了几次沟通?

客户端:大哥,新款nex发布没?

服务器:老弟,还没发,你记住,别老来问我!

一周后…

客户端:大哥,我又来了,最新情况如何?

服务器:跟上次一样。

一个月后…

客户端:大哥,这都一个月了,怎么样了啊?!

服务器:已经开售啦!

在这个例子里面,客户端与服务端沟通过程中就遵循某种规则,我们来看一下。

数据部分:机型的内容;

协议部分:1)别老来问我,2)最新情况如何,3)跟上次一样。

服务端说的这些话,客户端都能看懂并且明白这些话中所蕴含的意义,这就是客户端与服务端之间达成的某种通讯协议。

4.1 HTTP消息头

在介绍HTTP缓存协议之前,我们先来了解一下HTTP消息头的基础知识。我们对HTTP/HTTPS的数据请求都比较熟悉,在HTTP的数据请求中有一种信息叫做“头部信息”。

头部信息是在客户端请求或者服务端响应是传递给对方的一种信息。我们来看一下HTTP协议的组成部分。

HTTP 请求的组成

状态行、请求头、消息主体三部分组成。

HTTP 响应的组成

状态行、响应头、响应正文。

其中,请求头和响应头就是我们这里说的“头部信息”或者又叫“消息头”。那么头部信息有什么作用呢?

4.2 请求头

协议头
作用
Cookie 携带cookie信息
User-Agent 携带ua信息
Referer 标识来源
Content-Length 标识请求数据大小

4.3 响应头

协议头 作用
server 服务器的名称
data 数据时间
Content-Length 响应数据长度
Location 重定向时的地址

我们今天要讲的缓存协议——Cache-Control, 也是放在消息头中进行控制的。

4.4 缓存协议

在第一节中,我们介绍了使用缓存技术的三个优势,在网络数据交换的过程中,使用缓存技术同样有这三个优势。

1)降低系统压力

使用HTTP缓存技术,可以有效的降低服务端的压力,服务端不需要实时计算数据并返回数据。

2)节省资源消耗

使用HTTP缓存技术,可以有效的避免大量的重复数据传输,降低流量消耗。

3)优化用户体验

使用HTTP缓存技术,本地缓存可以以较快的速度加载,减少用户等待时间。

在讲HTTP协议如何实现缓存之前,我们先来讲一下缓存类型。HTTP缓存一般被分为两类,私有缓存和共享缓存。

4.4.1 私有缓存


了解更多,请关注 公众号 “ [code 杂坛]“!

END

mysql数据库优化秘籍

HTTPS 如何保证数据传输安全 —— TLS 协议

Kafka高吞吐、高性能核心技术及最佳应用场景

五分钟搭建基于Prometheus + Grafana实时监控系统

#文末福利#
欢迎公众号留言书名,免费赠送电子书大礼包,限1单/人,先到先得!
电子书单:
《增长黑客:创业公司的用户与收入增长秘籍》
《人月神话:互联网人两大圣经之一》
《钝感力(日)渡边淳一著:用钝感去管理,更加健康》
《深入理解nginx模块开发与架构解析第2版》
《计算广告:互联网可计算广告发展史》
《置身事内:中国政府与经济发展》

了解更多,请关注 公众号 “ [code 杂坛]“!

以上是关于HTTP缓存协议实战的主要内容,如果未能解决你的问题,请参考以下文章

接口HTTP请求协议响应(总结加深印象)

Web协议详解与抓包实战:HTTP1协议-请求与响应的上下文

实战Squid 缓存服务器 之 传统代理 + 透明代理

十二种抓龙头妖股的实战方法

Android架构师之路 网络层架构设计与实战

Android架构师之路 网络层架构设计与实战