一、冗余的数据传输

有些客户端访问服务器页面时,服务器会多次响应同一个页面的副本给客户端,这会产生冗余数据,故使用缓存就可以保留第一条相应的副本,以后就响应缓存的数据
二、带宽瓶颈
在需要下载大型文件时,如果在局域网中放入该文件的一个副本,则可以很快就下载完毕
三、瞬间拥塞
服务器同一时间处理多次请求,就会出现瞬间拥塞
四、距离延时
客户端和服务器存在一定的距离,信号传输会出现延时,如果将缓存放在附近的机房里就可以减少距离延时
五、命中与未命中
1.再验证
a.需要检测缓存副本是不是原始服务器上最新的缓存数据
b.缓存对缓存副本进行再验证时需要向服务器发送一个小的请求,如果内容没有变化,则服务器会以304作为响应,缓存依然认为副本有效,则再次作为暂时新鲜的提供给客户端,这被称作再验证命中
c.在GET请求中添加If-Modified-Since首部作为再验证的工具
i.再验证命中
如果服务器对未被修改,会向客户端发送一个HTTP304的响应码
ii.再验证未命中
如果服务器对象与缓存的不同,会向客户端发送一个HTTP 200 ok的响应码
iii.对象被删除
如果服务器对象被删除,会向客户端发送一个HTTP404的响应码,并删除起缓存副本
2.文档命中率
3.字节命中率
缓存提供的字节在传输的所有字节所占的比例
4.区分命中话与未命中的情况
客户端可通过Age和Date首部来判别
六、缓存的拓扑结构
1.私有缓存
缓存在个人电脑和磁盘中
2.公有缓存
特殊的代理服务器,接收来自多个用户的访问
3.代理缓存的层次结构
七、缓存的处理步骤
1.接受
从网络中读取抵达的请求报文
2.解析
解析报文为片段
3.查找
查看是否有本地副本可用,如果没有则从服务器上获取并存入本地副本中
4.新鲜度检测
当超过缓存的新鲜度限值时需要向服务器检查缓存是否发生变化
5.创建响应
缓存会用新的首部(Date除外)和已缓存的主题来构建一条响应报文
6.发送
缓存将响应发送给客户端
7.日志
缓存可选的创建一个日志文件来描述此次事务

Http协议(7)—Http缓存相关推荐

  1. 通过 HTTP 协议做 Web 缓存

    亲,你知道缓存是什么吗? 其实缓存就像办健身卡,我第一次花了699办了一年的卡之后,接下来的一年我都可以免费锻炼. 在web 中, 我们交的不是钱,而是空间,我们耗费一定的空间之后,能够获得网页打开速 ...

  2. 计网 - HTTP 协议_强制缓存和协商缓存的区别

    文章目录 Pre 请求响应和长连接 HTTP 2.0 的多路复用 HTTP 方法和 RestFul 架构 HTTP 方法 缓存 强制缓存 协商缓存 总结 Pre 超文本传输协议(HyperText T ...

  3. 802.11协议精读9:初探节能模式(PS mode)与缓存机制

    https://zhuanlan.zhihu.com/p/21505178 序言 由于802.11的协议工作机制,如果其一直处于工作状态下,那么能耗还是比较大的,尤其移动设备的电量有限,所以在802. ...

  4. 两个例子详解并发编程的可见性问题和有序性问题,通过volatile保证可见性和有序性以及volatile的底层原理——缓存一致性协议MESI和内存屏障禁止指令重排

    1. 并发编程的可见性问题 2. 并发编程的有序性问题 3. 使用volatile关键字解决可见性问题 4. 可见性问题的本质--缓存不一致 因为cpu执行速度很快,但是内存执行速度相对于CPU很慢, ...

  5. Spring mvc HTTP协议之缓存机制

    概述 Spring MVC 支持HTTP协议的 Last-Modified 缓存机制. 1. 在客户端地一次输入URL时,服务器端会返回内容和状态码200, 表示请求成功,同时会添加一个"L ...

  6. 同时存多个变量缓存 微信小程序_CPU缓存一致性协议MESI,memory barrier和java volatile...

    MESI协议 MESI协议是一个被广泛使用的CPU缓存一致性协议.我们都知道在CPU中存在着多级缓存,缓存级别越低,容量就越小,速度也越快.有了缓存,CPU就不需要每次都向主存读写数据,这提高了CPU ...

  7. 科普:CPU缓存一致性协议

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 CPU为何要有高速缓存 CPU在摩尔定律的指导下以每18个月翻一番的速度在 ...

  8. HTTP 协议 -- 浏览器缓存机制

    浏览器缓存机制 浏览器缓存机制主要是 HTTP 协议定义的缓存机制. HTTP 协议中有关缓存的缓存信息头的关键字有 Cache-Control,Pragma,Expires,Last-Modifie ...

  9. 并发编程之CPU缓存架构缓存一致性协议详解(二)

    并发编程之CPU缓存架构&缓存一致性协议详解 CPU高速缓存(Cache Memory) CPU高速缓存 在CPU访问存储设备时,无论是存取数据抑或存取指令,都趋于聚集在一片连续的区域中,这就 ...

最新文章

  1. 想不到,那些让我半夜偷偷收藏的沙雕表情包,竟是出自 AI 之手
  2. Junit中error和failure区别
  3. 神技能!研究人员利用扫描仪成功从物理隔离设备中偷出数据
  4. 用 Flask 来写个轻博客 (18) — 使用工厂模式来生成应用对象
  5. Interview:算法岗位面试—上海某公司算法岗位(偏数据分析,互联网行业)技术面试考点之特征工程考察点
  6. 1.9 Java数组和字符串的相互转换
  7. 《算法设计手册》面试题解答 第四章:排序和搜索
  8. [转] ASP.NET中使用javascript
  9. Jsp+SpringMVC+Mysql实现的进销存库存管理系统附带论文
  10. 单电源运算放大器全波整流电路_电子电路识图从入门到精通,从零开始学电子电路...
  11. 轻松搞定 SpringBoot 的邮件服务
  12. Vue脚手架组件开发常见问题
  13. php 文件上传$_FILES error错误码
  14. 【visio 绘图矢量图素材网站】
  15. XTU OJ String game
  16. [feather]StarlingUi框架——初识feather、界面启动及Ui加载
  17. Android 音视频开发(二):使用 AudioRecord 采集音频PCM并保存到文件(学习笔记)
  18. 大学学计算机7代i5够吗,学生党必看:最新的7代酷睿与Core i5相比该选谁?
  19. java.lang.IllegalAccessException 没有访问权限
  20. 神经对抗网络 自动标注,神经对抗网络研究课题

热门文章

  1. python get rect 函数_python笔记之函数
  2. python random randint_python中random.randint和random.randrange的区别详解
  3. dateframe行列插入和删除操作
  4. 【MySql】linux下,设置mysql表名忽略大小写
  5. 第五章 Response(JavaTM Servlet 规范3.1 )
  6. (二)spring MVC配置
  7. 微信公众平台开发接口PHP SDK完整版
  8. mysql linux文件_MySQL在Linux系统下配置文件详解
  9. 全国计算机等级考试题库二级C操作题100套(第54套)
  10. 实用插件_精选 10 个非常实用的 VS Code 插件