缓存实现
来源:互联网 发布:网络北京时间 编辑:程序博客网 时间:2024/06/05 11:08
缓存的实现原理
- 什么是 Web 缓存
WEB 缓存(cache)位于 Web 服务器和客户端之间。 缓存会根据请求保存输出内容的副本,例如 html 页面,图片,文件,当下一个请求来 到的时候:如果是相同的 URL,缓存直接使用副本响应访问请求,而不是向源服务器再次发 送请求。 HTTP 协议定义了相关的消息头来使 WEB 缓存尽可能好的工作。
- 缓存的优点
1.减少相应延迟:因为请求从缓存服务器(离客户端更近)而不是源服务器被相应, 这个过程耗时更少,让 web 服务器看上去相应更快。 2.减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带 宽费用,控制带宽的需求的增长并更易于管理。
- 与缓存相关的 HTTP 扩展消息头
1.Expires:指示响应内容过期的时间,格林威治时间 GMT 2.Cache-Control:更细致的控制缓存的内容 3.Last-Modified:响应中资源最后一次修改的时间 4.ETag:响应中资源的校验值,在服务器上某个时段是唯一标识的。 5.Date:服务器的时间 6.If-Modified-Since:客户端存取的该资源最后一次修改的时间,同 Last-Modified。 7.If-None-Match:客户端存取的该资源的检验值,同 ETag。
- 客户端缓存生效的常见流程
服务器收到请求时,会在 200OK 中回送该资源的 Last-Modified 和 ETag 头,客户端将 该资源保存在 cache 中,并记录这两个属性。当客户端需要发送相同的请求时,会在请求中 携带 If-Modified-Since 和 If-None-Match 两个头。两个头的值分别是响应中 Last-Modified 和 ETag 头的值。服务器通过这两个头判断本地资源未发生变化,客户端不 需要重新下载,返回 304 响应。常见流程如下图所示:
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 的请求的话,缓存就会过 期。
阅读全文
0 0
- 缓存实现
- 实现缓存 java实现
- PHP缓存的实现
- 实现缓存后替换
- 对象缓存 类实现
- PetShop缓存的实现
- 实现ASP缓存技术
- PHP缓存的实现
- PHP缓存的实现
- PHP缓存的实现
- 缓存实现静太化
- JAVA实现分布式缓存
- php 实现查询缓存
- JAVA缓存的实现
- JAVA缓存的实现
- PHP缓存实现
- PHP缓存的实现
- JAVA缓存的实现
- vue实战中遇到的`坑`
- 回环网卡驱动
- 《高性能MySQL》 第一章(并发控制、事务、存储引擎)
- JVM原理浅谈(2)
- 网页直播、微信直播技术解决方案:EasyNVR与EasyDSS流媒体服务器组合之区分不同场景下的easynvr
- 缓存实现
- 我为什么要写小说
- DVDFab(光盘无损复制工具)官方中文版V10.0.6.8下载 | dvdfab 10 破解版
- LeetCode Longest Palindromic Substring
- 指针分析:数组指针,指针数组,指针的指针,野指针深度解析
- Goland软件使用教程(三)
- (主席树)hdu2665 Kth number
- 软件性能测试学习笔记第一课:概念
- AutoMapper官方文档(五)【反向映射和复杂化】