美文网首页SAP
HTTP 200 OK和HTTP 304 Not modifie

HTTP 200 OK和HTTP 304 Not modifie

作者: _扫地僧_ | 来源:发表于2018-09-03 12:08 被阅读13次

这两个字段都和HTTP协议的缓存控制相关。

浏览器缓存机制是通过HTTP协议Header里的Cache-Control(或Expires)和Last-Modified(或 Etag)等字段来实现。

这两个字段的作用:

1. 接收响应时,浏览器决定文件是否需要被缓存;

2. 需要加载文件时,浏览器决定是否需要发出请求的字段。

看一些例子:

Cache-Control:max-age=115360000,表示缓存有效期为115360000秒。如果115360000秒内需要再次请求这个文件,浏览器不会发出向服务器发出请求,而是直接使用本地的缓存的文件。这是HTTP/1.1标准中的字段。

这总情况能在Chrome开发者工具的Network标签页里看到from disk cache的提示:

从本地缓存中读取文件非常快速,上面的例子只花费了6毫秒:

Expires: Thu, 31 Dec 2018 23:55:55 GMT,表示该文件的过期时间是2018年12月31日晚上23点55分55秒,在这个时间之前浏览器都不会再次发出请求去获取该文件。这是HTTP/1.0中的字段。

在Chrome开发者工具的network标签页里能看到:

下面两个字段是发起请求时,服务器决定文件是否需要更新的字段。

Last-Modified: Thu, 26 Jul 2018 05:41:21 GMT,这表示这个文件最后的修改时间是2018年7月26日5点41分21秒。

浏览器会在下次请求的时候,把Last-Modified的值作为Request Header的If-Modified-Since字段带上。如果浏览器缓存的文件已经超过了Cache-Control(或者Expires),那么需要加载这个文件时,就会发出请求,请求的Header有一个字段为If-Modified-Since,如下图所示:

服务器接收到请求后,会把文件的Last-Modified时间和这个时间对比,如果时间没变,那么浏览器将返回304 Not Modified给浏览器:

如果时间有变化,那么服务器会返回200 OK,并返回相应的内容给浏览器。

下图第9行的get_header_field方法是服务器从浏览器发送过来的HTTP请求提取头部字段If-Modified-Since的值。

下图第16行的set_header_field方法是服务器设置Last-Modified头部字段的值。

下图就是服务器设置304 Not Modified响应的位置:

要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:


相关文章

  • HTTP 200 OK和HTTP 304 Not modifie

    这两个字段都和HTTP协议的缓存控制相关。 浏览器缓存机制是通过HTTP协议Header里的Cache-Contr...

  • 常见HTTP状态码

    常见HTTP状态码 200 OK 301 Moved Permanently 302 Found 304 Not ...

  • http 之 200和304

    HTTP状态码之200和304 HTTP状态码(HTTP Status Code)是一种表示网页服务器响应状态的三...

  • http缓存200 OK (from cache) 与 304

    定义的区别 我们经常看到服务器返回如下几个缓存控制头部:(1)Last-Modified:表示文档的最后修改时间,...

  • http状态码(转)

    ttp中200、302、304、404和500等响应状态码所表示的意义? Http中200、302、304、404...

  • HTTP/1.1 200 OK

    记录一个刚踩的坑 因为公司用某的某厂商的设备,该设备发送http请求之后要求response header中 返回...

  • HTTP状态码

    1.常见http状态码(status); 1xx2xx 200 OK3xx 301 重定向 304不会被修改4...

  • http 1.0/1.1/2.0的区别

    HTTP1.0和HTTP1.1的一些区别: 缓存处理,在HTTP1.0中,使用header里的If-Modifie...

  • 《go web 编程》第三章 web基础:HTTP 响应包(服务

    我们再来看看 HTTP 的 response 包,他的结构如下: HTTP/1.1 200 OK ...

  • 20170610

    HTTP状态码:200系列:200、201.....代表成功300系列:304.......代表没有修改400系列...

网友评论

    本文标题:HTTP 200 OK和HTTP 304 Not modifie

    本文链接:https://www.haomeiwen.com/subject/rjubwftx.html