任务描述
本关任务:分析 HTTP 请求与响应报文中与缓存有关的字段。
相关知识
为了完成本关任务,你需要掌握:
- WEB 缓存访问过程及机制;
- HTTP 报文中与缓存有关的字段;
- 如何捕获缓存请求与报文。
浏览器缓存访问过程及机制
WEB 缓存一般分为浏览器缓存、代理服务器缓存以及网关缓存。WEB 缓存就在服务器-客户端之间搞监控,监控请求,并且把请求输出的内容(例如 HTML 页面、图片和文件)另存一份(统称为副本);然后,如果下一个请求是相同的 URL ,则直接请求保存的副本,而不是再次访问资源服务器。 使用缓存的 2 个主要优势:
- 降低延迟:缓存离客户端更近,因此,从缓存请求内容比从源服务器所用时间更少,呈现速度更快,网站就显得更灵敏;
- 降低网络传输:副本被重复使用,大大降低了用户的带宽使用,其实也是一种变相的省钱(如果流量要付费的话),同时保证了带宽请求在一个低水平上,更容易维护了。
HTTP 协议缓存是 WEB 缓存的一种,它是通过 HTTP 头信息来控制缓存的,HTTP 头信息可以让你对浏览器和代理服务器如何处理你的副本进行更多的控制。他们在 HTML 代码中是看不见的,一般由 Web 服务器自动生成。但是,根据你使用的服务器,你可以在某种程度上进行控制。
浏览器第一次请求流程如下图所示:
浏览器在第一次请求的时候不存在缓存,直接从浏览器请求,等请求返回结果之后再根据 HTTP 头信息将数据缓存在内存或者硬盘中。 浏览器再次请求同一 URL 时的流程如下图所示:
浏览器需要根据 HTTP 头信息来判断是否直接从缓存读取数据,还是交由服务器来判断是否从缓存读取数据。 几种状态码的区别如下图所示:
HTTP报文中与缓存有关的字段
HTTP 状态码(status code)
- 200 请求成功,浏览器会把响应回来的信息显示在浏览器端;
- 304 第一次访问一个资源后,浏览器会将该资源缓存到本地;第二次再访问该资源时,如果该资源没有发生改变或失效,那么服务器响应给浏览器 304 状态码,告诉浏览器使用本地缓存的资源。
HTTP 响应时,如何判断是该返回 200 还是 304 呢?与之相关的字段是: Last-Modified: 表示这个响应资源的最后修改时间。web 服务器在响应请求时,告诉浏览器资源的最后修改时间。 If-Modified-Since: 当资源过期时(使用 Cache-Control 标识的 max-age),发现资源具有 Last-Modified 声明,则再次向 WEB 服务器请求时,带上 If-Modified-Since,表示请求时间。WEB 服务器收到请求后发现有 If-Modified-Since 则与被请求资源的最后修改时间进行比对。若最后修改时间较新,说明资源有被改动过,则响应资源内容(写在响应消息包体内),HTTP 200 ;若最后修改时间较旧,说明资源无新修改,则响应 HTTP 304 (无需包体,节省流量),告知浏览器继续使用缓存。
HTTP 协议缓存捕获操作方法与步骤
1.启动浏览器,确保浏览器的缓存被清除。在 Firefox 下执行此操作,请选择“工具” - > “清除最近历史记录”,然后检查缓存框; 2.启动 Wireshark 数据包嗅探,在浏览器中输入某一 URL ,浏览器应显示一个 HTML 文件; 3.再次快速地将相同的 URL 输入到浏览器中(或者只需在浏览器中点击刷新按钮); 4.停止 Wireshark 数据包捕获,并在 display-filter-specification 窗口中输入“http”,以便只捕获 HTTP 消息,并在数据包列表窗口中显示。
如果无法连接网络并运行 Wireshark,则可以使用前一关中的加载文件的方式来进行分析。
操作要求
双击打开桌面上的工作区文件夹”workspace”,再打开实训文件夹”myshixun”,将查询的信息保存到文件message-2.txt
。具体要求如下:
(1)打开 Wireshark,加载实训文件夹中的http-ethereal-trace-2
文件,并筛选出其中的“HTTP”报文;
(2)选择列表窗口第一条 HTTP 请求报文,获取分组信息;
(3)展开 HTTP 报文头部信息,查找有无 IF-MODIFIED-SINCE
字段,并填写到文件中(填写“有”或“无”);
(4)查看该报文对应的响应报文的响应体部分,是否包含请求文件的内容,并写到文件中(填写“有”或“无”);
(5)选择列表窗口第二条 HTTP 请求报文并展开,在头部查找有无 IF-MODIFIED-SINCE
字段,并填写到文件中(填写“有”或“无”);
(6)选择列表窗口第二条 HTTP 请求报文对应的响应报文,展开 HTTP 头部信息查找服务器返回的状态编码,填写到文件中;
(7)在该响应报文中,展开 HTTP 头部信息查找服务器返回的状态描述,填写到文件中(注意首字母大写);
(8)该响应报文中,有无包含了请求文件内容;
message-2.txt
文章来源:https://www.toymoban.com/news/detail-764143.html
文章来源地址https://www.toymoban.com/news/detail-764143.html
到了这里,关于第2关:HTTP 协议缓存的响应分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!