参考: 百度百科、HTTP Status Code 304 状态码的详细讲解

304 是对客户端有缓存情况下服务端的一种响应。

在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是客户端请求的资源,同时有一个Last-Modified的属性标记此文件在服务器端最后被修改的时间。客户端第二次请求此URL时,根据HTTP协议的规定,浏览器会向服务器传送If-Modified-Since报头,询问该时间之后文件是否有被修改过。两个时间戳的格式如下:

Last-Modified:Last-Modified : Fri , 12 May 2006 18:53:33 GMT

If-Modified-Since : Fri , 12 May 2006 18:53:33 GMT

如果服务器端的资源没有变化,则自动返回 HTTP 304(Not Changed.)状态码,内容为空,这样就节省了传输数据量。当服务器端代码发生改变或者重启服务器时,则重新发出资源,返回和第一次请求时类似。从而保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

对于静态文件,例如:CSS、图片,服务器会自动完成 Last Modified 和 If Modified Since 的比较,完成缓存或者更新。但是对于动态页面,不会包含 Last Modified 信息,浏览器、网关等都不会做缓存,也就是在每次请求的时候都完成一个 200 的请求。

如下两张图片,图一为浏览器无缓存的状态码,可以看出 status 全为 200。图二是浏览器中存在缓存时的状态码,可以看出全为 304。同时我们还可以比较二者页面的加载时间,时间位于最下面一行的Load Time,可以看出差距比较大,使用缓存可以节省好多时间。

图一
图二

状态码304的简单介绍相关推荐

  1. http状态码304缓存机制(强缓存和协商缓存-304)

    前言:好久没写博客了,今天早上闲着没事重新看了下http的304缓存机制.下面我就简单的讲下我的理解吧. 描述:首先我们先明白一点什么是状态码.对于我们开发来说,大家一说起http状态码,都能随口说几 ...

  2. HTTP状态码304与ETag详解

    总结一下,最近项目开发遇到的.由于缓存框架设计时,缓存请求文件时只以发起请求的url 为key,导致在客户端发起url 相同,传参类型不同的请求时,交替请求会出现,带上一次请求返回的etag ,进行下 ...

  3. HTTP:状态码304

    状态码304 相关头信息   * Last-Modified:响应头,表示当前资源的最后修改时间:   * If-Modified-Since:请求头,表示缓存的资源最后修改时间: 状态码304:表示 ...

  4. 协商缓存与状态码304

    协商缓存与状态码304 304 有时候我们访问某些网站会发现在控制台中,网络状态码返回的是304.(更多状态码相关-http必备知识点:http请求与js及状态码) 304(Not Modified) ...

  5. HTTP 状态码 304 缓存机制

    HTTP 状态码 304 缓存机制 交互流程 客户端第一次请求服务端的某个地址时,服务端会在响应时携带 ETag 与 Last-Modified 响应头,客户端下次再发送同一地址的请求时,会携带 If ...

  6. http状态码304

    简单来说, 304状态码表示资源未被修改.当不是第一次访问一个静态页面或者图片时,就会得到这么一个提示.这个是服务器提示浏览器,这个资源没有发生改变,你直接使用上一次下载的就行,不需要重新下载.这样节 ...

  7. 返回状态码304 Not Modified详解

    第一次访问 200 鼠标点击二次访问 (Cache) 按F5刷新 304 按Ctrl+F5强制刷新 200 在客户端向服务端发送http请求时,若返回状态码为304 Not Modified 则表明此 ...

  8. HTTP状态码304详解

    图和代码来源理解HTTP缓存和304状态码 下图是使用express启动了一个服务,启动之后浏览器访问两次localhost:8080所得请求.响应头 var express = require('e ...

  9. html 源码_HTML从零开始——简单介绍

    HTML 是网页使用的语言,定义了网页的结构和内容.浏览器访问网站,其实就是从服务器下载 HTML 代码,然后渲染出网页. HTML 的全名是"超文本标记语言"(HyperText ...

最新文章

  1. 2018-3-21李宏毅机器学习视频笔记(十二)--Backpropagation
  2. AAAI 2020 | 时间可以是二维的吗?基于二维时间图的视频内容片段检测
  3. 让数百万台手机训练同一个模型?Google把这套框架开源了
  4. java中ArrayList
  5. 探索从 MVC 到 MVVM + Flux 架构模式的转变
  6. java用递归删除文件夹_Java中通过递归调用删除文件夹下所有文件
  7. 简单实现几种常见的前端效果,附代码!
  8. 存储过程的版本控制(StoreProcedure,SourceSafe)
  9. 为了不被OUT,UC决定不再安静地做个浏览器了
  10. JDK1.8下载与安装及环境变量配置
  11. html 怎么设置时间函数,JavaScript日期函数 - 计时器、innerHTML
  12. [转]JavaScript程序编码规范
  13. linux su - 用户名,在Linux中,su命令 (切换用户)
  14. 新版白话空间统计(2):空间自相关
  15. python项目总结
  16. html5单行文本框属性,文本框list属性和文本框autocomplete属性
  17. 用mysql设计学籍管理系统_学生学籍管理系统(SQL数据库系统设计)(完整版).pdf...
  18. 微信小程序---页面刷新的几种方法
  19. 欢迎大家体验滴滴Logi-KafkaManager
  20. H3C_RIP_路由器_动态路由

热门文章

  1. 激光切割机软件开发如何补充参数
  2. 【博客546】组播IP地址与组播MAC地址的联系与转换
  3. 打开印能捷服务器怎么修改ip,印能捷服务器主机
  4. Mac系统好的修图软件,收藏有备无患
  5. python详细介绍
  6. 创维酷开8S70 安卓4.4ROM
  7. 【蓝桥杯】历届真题 魔方旋转问题(高职组) Java
  8. 大型API网关(八)—— 超卖和资源隔离
  9. 网络视频任你搜 — Google(谷歌)推出视频搜索
  10. Look N Stop防火墙使用指南规则教程(1)