7.1 冗余的数据传输

  缓存的作用:当客户端每次访问服务器,服务器都会返回一份相同文件,一些相同的字节会不断的在网络内传输,这样冗余的数据传输会耗尽昂贵的带宽,降低传输速度,加重Web服务器的负载。

        有了缓存就可以保留第一条服务器发送的文件副本,后继请求就可以用缓存的副本文件响应,减少流入/流出服务器的数据,降低被浪费的流量。

7.2 传输瓶颈

  7.2.1 带宽:带宽越宽,传输越快

  7.2.2 瞬间拥塞:突发事件,重要新闻会导致很多客户端访问同一个服务器,容易造成瞬间拥塞

  7.2.3 距离时延:距离消耗时间,距离越远,传输越慢

7.3 命中和未命中

  缓存命中:缓存中已有的副本为某些请求提供服务,称为命中。

  缓存未命中:缓存中未有副本可对请求提供服务,而被转发至原始服务器,这称为未命中(下次该请求应该会是缓存命中)。

  再验证:原始服务器的内容可能发生变化,缓存要不时对其进行检查。

    

  Http提供了几个常用的对缓存进行检测验证的工具,常用的是:if-modifed-Since首部,将该首部添加到Get请求中,只有在缓存已有该副本,切服务器该文件已发生变化时,才会发送此对象。

盗图:

再验证:

  再验证命中:如果对象未修改,则反馈 304 Not Modified,缓存会将该副本记为有效,并将副本提供给客户端。

  再验证未命中:服务器文件与副本不相同,服务器向客户端发一条普通的带有完整内容的HTTP 200 OK。

  对象被删除:服务器返回 404 NOT found

命中率:缓存命中率,有时也称为文档命中率,正常40%为合理。

    字节命中率:相对整个文档的每个字节的命中率。

7.4 缓存的拓扑结构

  7.4.1 公有与私有

  缓存可以是单个用户专用,也可以是数千用户共享使用的

  专用的缓存被称为私有缓存。

  共享的缓存被称为公有缓存。

盗图

  7.4.2 层次结构

  层次化结构缓存是很有意义的,在较小缓存未命中的情况下会转向父缓存继续查询命中,缓存级传递过多会造成响应时差大。

  网状缓存:网状缓存中的各缓存会以更加复杂的方式进行对话,做出动态的缓存通信决策,决定哪个父缓存进行对话,决定彻底绕开缓存,直接访问服务器等。这种代理缓存会决定选择何种路由进行访问、管理、传输,因此被称为内容路由器

  网状缓存完成了下列功能:

  • 根据URL在父缓存或者原始服务器之间进行动态选择。
  • 根据URL动态的选择一个特定的父级缓存。
  • 前往父级缓存之前,在本地缓存中搜索已缓存的副本。
  • 允许其他缓存对缓存部分进行访问,但不允许流量对其访问。

7.5 缓存的处理步骤

  1. 接收 ——读取请求报文
  2. 解析 ——对报文进行解析,提取URL及首部
  3. 查询 ——查询本地是否有副本,如没有就从服务器获取一份并保存本地
  4. 新鲜度检测 ——查看缓存副本是否新鲜,如果不是则询问是否服务器有所更新。
  5. 创建响应 ——缓存会用新的首部和已缓存的主体创建一条响应报文
  6. 发送 ——将响应报文发送至客户端
  7. 日志 ——创建日志文件条目记录该次事件

  

HTTP权威协议笔记-7.缓存的更多相关文章

  1. HTTP权威协议笔记-6.代理

    6.1 Web的中间实体 Http的代理服务器即是客户端的服务器又是服务器的客户端. 它介于服务器与客户端之间,当客户端发送请求报文经过它时,它会像服务器一样正确的处理请求和返回响应,同时,代理服务器 ...

  2. HTTP权威协议笔记-7.集成点:网关、隧道及中继

    .8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...

  3. HTTP权威协议笔记-4.连接管理

    4.1 TCP连接 TCP为HTTP提供了一条可靠的比特传输管道,按顺序正确的传输,步骤如下: 浏览器解析主机名. 查询这个主机名的IP地址(DNS) 获得端口号. 浏览器对服务器该端口号发起连接. ...

  4. HTTP权威协议笔记-10.HTTP-NG

    1.HTTP发展中存在的问题 复杂性   其连接.报文.及功能逻辑之间的混合使用相当复杂,使用容易出错 可扩展性 传统流行下来的http应用很难实现扩展性,且无法兼容 性能      高延时.低吞吐 ...

  5. HTTP权威协议笔记-8.集成点:网关、隧道及中继

    .8.1 网关 定义:网关类似与翻译器,它抽象出了一种能够到达资源的方法. 实用:网关可以自动将HTTP流量转换为其他协议,这样使用HTTP协议的一方就不需要了解其他协议,也可实现与其他程序或设备交互 ...

  6. HTTP权威协议笔记-5.Web服务器

    5.1 Web服务器工作内容 建立连接--接受一个客户端的连接,或者将其拒绝 接受请求--从网络中读取一条HTTP报文 处理请求--对请求报文进行解释,并采取行动 访问资源--访问报文中指定的资源 构 ...

  7. HTTP权威协议笔记-3.Http报文

    3.1 报文流 http使用流入和流出来描述事物处理方向,报文包含:起始行.首部和主体. 3.2 起始行 起始行包含:请求行和回应行. 3.2.1请求行 请求行包含:方法.请求URL(描述了对哪个资源 ...

  8. HTTP权威协议笔记-9.Web机器人

    经过整个春节的放肆,终于回归了,说实话,春节真心比上班累. 9.1 爬虫及爬行方式 (1) 爬虫:Web爬虫是一种机器人,他们会递归性的对各种信息Web站点进行遍历. (2) 爬行方式:Web机器人会 ...

  9. Struts2权威指南笔记

    Struts2权威指南笔记 1.mvc特点包括: ① 多个视图可以对应一个模型 ② 模型返回的数据与显示逻辑分离 ③ 应用层被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性 ④ 控制层的概念也 ...

随机推荐

  1. Javascript模式(第五章对象创建模式)------读书笔记

    一 命名空间模式 1 命名空间模式的代码格式 var MYAPP={ name:"", version:"1.0", init:function(){ } }; ...

  2. 【zz】MIT牛人解说数学体系

    作者:林达华 一.为什么要深入数学的世界 作为计算机的学生,我(原作者)没有任何企图要成为一个数学家.我学习数学的目 的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些. ...

  3. 如何使用一个对象而非数组元素为ng-options初始化

    a,是引用,而b是一个和a内容相同的另一个对象, 因此不能通过b直接赋值.如果要这样用,就用 track by xxx.id  ,它的作用是通过id(唯一的)去ng-options做一次检索匹配

  4. [Linux] IP绑定解释 BindIp

    一.缘由: 今天安装Mongodb,本来想限制只能内网或者某几台机器可以访问,看到配置文件有个net.bindIp选项, 就自以为是的认为,他可以像nginx那样限制访问来源IP,其实大错特错.这里配 ...

  5. Async Programming - 1 async-await 糖的本质(1)

    这一个系列的文章主要来讲 C# 中的语言特性 async-await 在语言层面的本质,我们都知道 await 是编译器进行了一个 rewrite,然而这个 rewrite 并不是直接 rewrite ...

  6. Django 之 分表

    app名称为'core',基本的models.py文件内容如下: class Province(models.Model): name = models.CharField(u'省份名称',max_l ...

  7. Google Font字体本地化使用提高网站访问速度

    Google Web font在国内经常不稳定,速度在国内延迟也很高,而引发网页打开速度慢. 一.常见的字体格式介绍 不同的浏览器对字体格式支持是不一致的,常见的如下: 1.TureTpe(.ttf) ...

  8. SQL Server安全概念简析

    I. 登录名与用户名 登录名: 访问数据库服务器的账户.登录名可以登录到服务器,但不能直接访问数据库内容.数据库连接串中的用户名应配置为登录名.每个登录名的定义存放在master数据库的syslogi ...

  9. iOS开发之CocoaPods的使用

    你开发iOS的方式还是石器时代吗?在这个世界上并不是所有的软件开发人员都是码农.在这个世界上有很多的geek存在他们为这个语言的发展做出了很大的贡献.现在随着iOS开发者的曾多也就出现了iOS程序猿提 ...

  10. mysql数据库字符集的设置

    my.ini文件中clinet和mysqld中的写法不一样,要注意  [client]   port=3306   default-character-set=utf8      [mysqld]   ...