博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
http之缓存的实现原理
阅读量:7078 次
发布时间:2019-06-28

本文共 1078 字,大约阅读时间需要 3 分钟。

  hot3.png

WEB缓存(cache)位于Web服务器和客户端之间。

缓存可由数据库端取出的k-v键值对服务端内存缓存(leveldb,redis等),也可对html页面,资源文本,文件方式客户端文件缓存

缓存会根据请求保存输出内容的副本,例如html页面,图片,文件,当下一个请求来到的时候:如果是相同的URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发送请求。
HTTP协议定义了相关的消息头来使WEB缓存尽可能好的工作。

1、缓存的优点

减少相应延迟:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应,这个过程耗时更少,让web服务器看上去相应更快。
减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。

2、客户端缓存生效的常见流程

服务器收到请求时,会在200OK中回送该资源的Last-Modified和 ETag头,客户端将该资源保存在cache中,并记录这两个属性。当客户端需要发送相同的请求时,会在请求中携带If-Modified-Since和 If-None-Match两个头。两个头的值分别是响应中Last-Modified和ETag头的值。服务器通过这两个头判断本地资源未发生变化,客 户端不需要重新下载,返回304响应。

3、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的请求的话,缓存就会过期。

转载于:https://my.oschina.net/sunmin/blog/535901

你可能感兴趣的文章
C语言编译过程
查看>>
python单元测试--深入理解unittest
查看>>
实现Map接口(hash原理)
查看>>
跟我学算法-图像识别之图像分类(上)(基础神经网络, 卷积神经网络(CNN), AlexNet,NIN, VGG)...
查看>>
面向对象程序设计第二单元总结
查看>>
hdu 4003 Find Metal Mineral
查看>>
当你和世界不一样
查看>>
APP数据运营的11个流程步骤
查看>>
linux 内核生成
查看>>
C#高级编程9 第18章 部署
查看>>
Sql语句常用关键字
查看>>
数据结构与算法面试总结
查看>>
note 0 Python介绍及Python IDE环境安装 Spyder with Anaconda
查看>>
LeetCode - Maximum Subarray
查看>>
数据库附加或还原后用户权限问题
查看>>
C# String.Format格式说明
查看>>
onload事件
查看>>
静雅斋目录导航
查看>>
PHP 图片添加水印
查看>>
第四章~~!!!~switch结构
查看>>