状态码304的简单介绍
参考: 百度百科、HTTP Status Code 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的简单介绍相关推荐
- http状态码304缓存机制(强缓存和协商缓存-304)
前言:好久没写博客了,今天早上闲着没事重新看了下http的304缓存机制.下面我就简单的讲下我的理解吧. 描述:首先我们先明白一点什么是状态码.对于我们开发来说,大家一说起http状态码,都能随口说几 ...
- HTTP状态码304与ETag详解
总结一下,最近项目开发遇到的.由于缓存框架设计时,缓存请求文件时只以发起请求的url 为key,导致在客户端发起url 相同,传参类型不同的请求时,交替请求会出现,带上一次请求返回的etag ,进行下 ...
- HTTP:状态码304
状态码304 相关头信息 * Last-Modified:响应头,表示当前资源的最后修改时间: * If-Modified-Since:请求头,表示缓存的资源最后修改时间: 状态码304:表示 ...
- 协商缓存与状态码304
协商缓存与状态码304 304 有时候我们访问某些网站会发现在控制台中,网络状态码返回的是304.(更多状态码相关-http必备知识点:http请求与js及状态码) 304(Not Modified) ...
- HTTP 状态码 304 缓存机制
HTTP 状态码 304 缓存机制 交互流程 客户端第一次请求服务端的某个地址时,服务端会在响应时携带 ETag 与 Last-Modified 响应头,客户端下次再发送同一地址的请求时,会携带 If ...
- http状态码304
简单来说, 304状态码表示资源未被修改.当不是第一次访问一个静态页面或者图片时,就会得到这么一个提示.这个是服务器提示浏览器,这个资源没有发生改变,你直接使用上一次下载的就行,不需要重新下载.这样节 ...
- 返回状态码304 Not Modified详解
第一次访问 200 鼠标点击二次访问 (Cache) 按F5刷新 304 按Ctrl+F5强制刷新 200 在客户端向服务端发送http请求时,若返回状态码为304 Not Modified 则表明此 ...
- HTTP状态码304详解
图和代码来源理解HTTP缓存和304状态码 下图是使用express启动了一个服务,启动之后浏览器访问两次localhost:8080所得请求.响应头 var express = require('e ...
- html 源码_HTML从零开始——简单介绍
HTML 是网页使用的语言,定义了网页的结构和内容.浏览器访问网站,其实就是从服务器下载 HTML 代码,然后渲染出网页. HTML 的全名是"超文本标记语言"(HyperText ...
最新文章
- 2018-3-21李宏毅机器学习视频笔记(十二)--Backpropagation
- AAAI 2020 | 时间可以是二维的吗?基于二维时间图的视频内容片段检测
- 让数百万台手机训练同一个模型?Google把这套框架开源了
- java中ArrayList
- 探索从 MVC 到 MVVM + Flux 架构模式的转变
- java用递归删除文件夹_Java中通过递归调用删除文件夹下所有文件
- 简单实现几种常见的前端效果,附代码!
- 存储过程的版本控制(StoreProcedure,SourceSafe)
- 为了不被OUT,UC决定不再安静地做个浏览器了
- JDK1.8下载与安装及环境变量配置
- html 怎么设置时间函数,JavaScript日期函数 - 计时器、innerHTML
- [转]JavaScript程序编码规范
- linux su - 用户名,在Linux中,su命令 (切换用户)
- 新版白话空间统计(2):空间自相关
- python项目总结
- html5单行文本框属性,文本框list属性和文本框autocomplete属性
- 用mysql设计学籍管理系统_学生学籍管理系统(SQL数据库系统设计)(完整版).pdf...
- 微信小程序---页面刷新的几种方法
- 欢迎大家体验滴滴Logi-KafkaManager
- H3C_RIP_路由器_动态路由