2.5 Web缓存

Web缓存器(Web cache)也叫代理服务器(proxy server),它是能够代表初始Web服务器来满足HTTP请求的网络实体。

Web缓存器有自己的磁盘存储空间,并在存储空间中保存最近请求过的对象的副本。

可以配置用户的浏览器,使得用户的所有HTTP请求首先指向Web缓存器。

一旦某浏览器被配置,每个对某对象的浏览器请求首先被定向到该Web缓存器。

举例来说,假设浏览器正在请求对象http://www.someschool.edu/campus.gif,将会发生如下情况:

(1) 浏览器创建一个到Web缓存器的TCP连接,并向Web缓存器中的对象发送一个HTTP请求。

(2) Web缓存器进行检查,看看本地是否存储了该对象副本。如果有,Web缓存器就向客户浏览器用HTTP响应报文返回该对象。

(3) 如果Web缓存器中没有该对象,它就打开个与该对象的初始服务器(即www.someschool.edu)的TCP连接。Web缓存器则在这个缓存器到服务器的TCP连接上发送一个对该对象的HTTP请求。在收到该请求后,初始服务器向该Web缓存器发送具有该对象的HTTP响应。

(4) 当Web缓存器接收到该对象时,它在本地存储空间存储一份副本,并向客户的浏览器用HTTP响应报文发送该副本。

值得注意的是Web缓存器既是服务器又是客户。

当它接收浏览器的请求并发回响应时,它是一个服务器。

当它向初始服务器发出请求并接收响应时,它是一个客户。

2.6 条件GET方法

尽管高速缓存能减少用户感受到的响应时间,但也引入了一个新的问题,即存放在缓存器中的对象副本可能是陈旧的。

换句话说,保存在服务器中的对象自该副本缓存在客户上以后可能已经被修改了。

HTTP协议有一种机制,允许缓存器证实它的对象是最新的。这种机制就是条件GET(conditional GET)方法

如果:①请求报文使用GET方法;并且②请求报文中包含一个“If-Modified-Since:”首部行。那么, 这个HTTP请求报文就是一个条件GET请求报文。

为了说明GET方法的操作方式,列举一个例子。

首先,一个代理缓存器(proxy cache)代表一个请求浏览器,向某Web服务器发送一个请求报文:

其次,该Web服务器向缓存器发送具有被请求的对象的响应报文:

该缓存器在将对象转发到请求的浏览器的同时,也在本地缓存了该对象。

重要的是,缓存器在存储该对象时也存储了最后修改日期。

最后,一个星期后,另一个用户经过该缓存器请求同一个对象,该对象仍在这个缓存器中。

由于在过去的一个星期中位于Web服务器上的该对象可能已经被修改了,该缓存器通过发送一个条件GET执行最新检查。

具体来说,该缓存器发送:

值得注意的是If-Modified-Since:首部行的值正好等于一星期前服务器发送的响应报文中的Last-Modified:首部行的值。

该条件GET报文告诉服务器,仅当自指定日期之后该对象被修改过,才发送该对象。

假设该对象自2015年9月9日09:23:24后没有被修改。接下来的第四步,Web服务器向该缓存器发送一个响应报文:

作为对该条件GET方法的响应,该Web服务器仍发送一个响应报文,但并没有在该响应报文中包含所请求的对象。

参考

《计算机网络——自顶向下方法》 —— 2 应用层

(二)应用层 -- 2. Web和HTTP(下)相关推荐

  1. SSL应用系列之二:为Web站点实现SSL加密访问

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://jeffyyko.blog.51cto.com/28563/141322 上一节中 ...

  2. 使用Synology群晖内置web station和榴莲壳发布自己的网站(二)设置Web Station

    使用Synology群晖内置web station和榴莲壳发布自己的网站(二)设置Web Station 配置 设置群晖Web Station 打开Web Station设置 安装Apache HTT ...

  3. 「第十二章」Web框架安全

    「第三篇」服务器端应用安全批注[--] 表示他人.自己.网络批注参考资料来源于* 书中批注* CSDN* GitHub* Google* 维基百科* YouTube* MDN Web Docs由于编写 ...

  4. 树莓派3 利用frp内网穿透web搭建 -- bt下载机的应用

                                    树莓派3 利用frp内网穿透web搭建 -- bt下载机的应用 请参考我前面写的博客:http://blog.csdn.net/wang ...

  5. 【计算机网络:自顶向下方法】(二)应用层

    tm [计算机网络:自顶向下方法](二)应用层 文章目录 应用层 如何创建一个新的网络应用? 2.1 应用层原理 网络应用的体系结构 对等模式(P2P:Peer To Peer) 混合体:客户-服 ...

  6. 监控web站点目录下所有文件是否被恶意篡改

    监控web站点目录下所有文件是否被恶意篡改,(文件内容被改了)如果有的就打印改动的文件名 定时任务:每三分钟执行一次监测一次 文件被篡改的特征: 大小可能会变化(为什么说可能呢,如果把里面的值1改为2 ...

  7. log4j添加日志一定记住在工程的web.xml文件下加一些内容

    log4j添加日志一定记住在工程的web.xml文件下加如下内容: 转载于:https://www.cnblogs.com/oymx/p/3965878.html

  8. IntelliJ idea 创建Web项目后web文件夹下没有WEB-INF的解决方法

    IntelliJ idea 创建Web项目后web文件夹下没有WEB-INF的解决方法 参考文章: (1)IntelliJ idea 创建Web项目后web文件夹下没有WEB-INF的解决方法 (2) ...

  9. 直角坐标积分化为极坐标积分_将直角坐标系下的二次积分转换成极坐标系下的二次积分...

    龙源期刊网 http://www.qikan.com.cn 将直角坐标系下的二次积分转换成极坐标系 下的二次积分 作者:朱清芳 来源:<科技信息 · 上旬刊> 2017 年第 06 期 摘 ...

  10. 现实迷途 第三十二章 阴晴反复(下)

    第三十二章 阴晴反复(下) 注:原创作品,请尊重原作者,未经同意,请勿转载,否则追究责任. "成也萧何,败也萧何",坏事是因为下雨,成事也是因为下雨,这雨还真的是给江北制造了亲近钱 ...

最新文章

  1. need study
  2. java string逆序_Java学习笔记(八)——异常
  3. 计算机默认存储格式,office2007默认保存文件格式的修改方法
  4. 开源数据库中间件-MyCa初探与分片实践
  5. 曲线的生成算法实现_PCGPlanet1-地形生成算法简介
  6. sql不等于0怎么表示_数组真的只能从0开始吗?python表示不同意
  7. 鼠标问题:鼠标拖拽不灵敏,准备复制拖动的半截就断了
  8. 7-8 字符串字母大小写转换 (15 分)
  9. opencv python 实现灰度图像和彩色图像直方图全局均衡化和自适应均衡化
  10. python画数学函数_Python 绘制你想要的数学函数图形 !
  11. Rust: codewars的prize draw算法
  12. js生成二维码,js 解析二维码,jsqrcode,js从url生成二维码
  13. vmware workstations 共享虚拟机 failed to connect 903
  14. C语言练习作品 - U盘病毒模拟
  15. Base64使用案例
  16. java 导出txt_【Java】导入导出TXT文件
  17. 2020年 Top 6+ 最佳免费字体网站
  18. 现代密码学(六)——投币协议(Coin-Flipping by Phone)
  19. Lecture 12: Iterated Expectations; Sum of a Random Number of Random Variables
  20. read函数的 用法

热门文章

  1. 用一个简单的例子说明SQL子查询
  2. IOS模仿IOS系统的assistive-touch
  3. php throw 应用,PHP5的异常处理机制之使用Throw关键字_PHP教程
  4. yolov5关闭wandb
  5. 前端js截取数组的常用方法(记得收藏点赞)
  6. 看我如何黑进邻居的电视
  7. 公司股权转让,变更股东要了解哪些?
  8. harris算法 matlab,harris快速算法
  9. Portable Virtual Box+Kali Linux+Docker+WRK做压力测试
  10. 2020第十一届极客大挑战——Geek Challenge部分wp