HTTP 中的 304

最新推荐文章于 2025-01-04 16:44:52 发布
weixin_33758863 最新推荐文章于 2025-01-04 16:44:52 发布
阅读量102 收藏
点赞数
CC 4.0 BY-SA版权
文章标签: 数据库
原文链接:http://blog.51cto.com/stevenlee87/1182484
最近和同事一起看Web的Cache问题,又进一步理解了 HTTP 中的 304 又有了一些了解。
304 的标准解释是:Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
如 果客户端在请求一个文件的时候,发现自己缓存的文件有 Last Modified ,那么在请求中会包含 If Modified Since ,这个时间就是缓存文件的 Last Modified 。因此,如果请求中包含 If Modified Since,就说明已经有缓存在客户端。只要判断这个时间和当前请求的文件的修改时间就可以确定是返回 304 还是 200 。对于静态文件,例如:CSS、图片,服务器会自动完成 Last Modified 和 If Modified Since 的比较,完成缓存或者更新。但是对于动态页面,就是动态产生的页面,往往没有包含 Last Modified 信息,这样浏览器、网关等都不会做缓存,也就是在每次请求的时候都完成一个 200 的请求。
因此,对于动态页面做缓存加速,首先要在 Response 的 HTTP Header 中增加 Last Modified 定义,其次根据 Request 中的 If Modified Since 和被请求内容的更新时间来返回 200 或者 304 。虽然在返回 304 的时候已经做了一次数据库查询,但是可以避免接下来更多的数据库查询,并且没有返回页面内容而只是一个 HTTP Header,从而大大的降低带宽的消耗,对于用户的感觉也是提高。
当这些缓存有效的时候,通过 HttpWatch 查看一个请求会得到这样的结果:
第一次访问 200
鼠标点击二次访问 (Cache)
按F5刷新 304
按Ctrl+F5强制刷新 200
如果是这样的就说明缓存真正有效了。以上就是我对 HTTP 304 的一个理解。

转载于:https://blog.51cto.com/stevenlee87/1182484

确定要放弃本次机会?
福利倒计时
: :

立减 ¥

普通VIP年卡可用
立即使用
weixin_33758863
关注 关注
  • 0
    点赞
  • 踩
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  • 分享
    复制链接
    分享到 QQ
    分享到新浪微博
    扫一扫
  • 举报
    举报
http状态码之304
hutongxue434的博客
07-25 5859
常见的http状态码: 100 继续发送请求 101 切换协议 200 成功 301 永久重定向 302 暂时重定向 400 语法错误 403 没有足够的权限 404 找不到对应的资源 500 服务器内部错误 503 服务不可用 3XX系列的状态码表示重定向,这系列中的304比较特殊,304 的标准解释是:客户端有缓冲的文档并发出了一个条件性的请求。服务器告诉客户端,原来缓冲的文档还可以继续使用。 浏览器缓存 浏览器缓存是浏览器将用户请求过的静态资源(html、css、js),存储到电脑本地磁盘中,当浏
http 304响应的理解
u012902406的博客
07-11 9772
我们经常会看到请求地址中状态存在304、200   如果客户端(浏览器)发送的是一个条件验证请求,则web服务器可能会返回304响应,这就表明了客户端中所请求资源的缓存仍然是有效的,也就是说该资源从上次缓存到现在没有被修改过,浏览器会自动识别并读取缓存中的文件来显示   在进行条件请求时,一般请求头会带上  If-Modified-Since、 If-None-Match,这两个值分别...
参与评论 您还未登录,请先 登录 后发表或查看评论
HTTP状态码304详解
我的博客
04-07 2万+
图和代码来源理解HTTP缓存和304状态码 下图是使用express启动了一个服务,启动之后浏览器访问两次localhost:8080所得请求、响应头 var express = require('express'); var app = express(); app.get('/', function(req, res) { res.send('hello world'); }); a...
常见HTTP状态
u010271717的专栏
04-09 1234
在网站建设的实际应用中,容易出现很多小小的失误,就像mysql当初优化不到位,影响整体网站的浏览效果一样,其实,网站的常规http状态码的表现也是一样,Google无法验证网站几种解决办法,提及到由于404状态页面设置不正常,导致了google管理员工具无法验证的情况,当然,影响的不仅仅是这一方面,影响的更是网站的整体浏览效果。因此,比较清楚详细的了解http状态码的具体含义,对于一个网站站长来说
HTTP状态码304
weixin_47389477的博客
09-09 3534
关于304状态码,这篇文章就够了
http code :304 代表什么?你知道多少?
最新发布
嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。
01-04 6903
HTTP 状态码 304 Not Modified 是一个无内容(no-content)的状态码,表示客户端发送了一个条件性请求(conditional request),并且服务器发现自从上次请求以来资源并没有改变,因此返回这个状态码而不是重复传输相同的数据。当客户端(通常是浏览器)向服务器请求一个资源时,如果之前已经缓存过这个资源,那么它会在请求头中包含一些信息,比如 If-Modified-Since 或 If-None-Match,以询问服务器这个资源是否已经被修改。
HTTP 304错误的详细讲解
09-04
HTTP 304 错误,也称为 "Not Modified",是HTTP协议中的一种状态码,用于指示客户端在发送请求时提供了缓存信息,并且服务器验证后发现客户端的缓存版本是最新的,无需重新发送完整的资源。这个状态码是HTTP缓存机制...
ASP.NET Web API中未修改的HTTP 304
04-08
**ASP.NET Web API 中未修改的HTTP 304详解** 在ASP.NET Web API中,HTTP 304状态码是用于实现HTTP缓存机制的一部分,特别是“Not Modified”(未修改)响应。这个状态码允许客户端(如浏览器)利用缓存副本,减少...
理解 HTTP 状态码 304
09-08
HTTP状态码304是HTTP协议中用于缓存控制的一个重要部分,它被称作“未修改”,用来向客户端表明服务器上的资源自客户端最后一次请求之后未发生变更。当客户端发起带有条件的HTTP请求时,如果资源未发生变化,服务器...
web服务器缓存静态资源,更新静态资源的规则,静态资源如css,js文件 HTTP CODE 304.zip
01-10
以下将详细介绍关于“web服务器缓存静态资源,更新静态资源的规则”以及HTTP状态码304的相关知识点。 首先,静态资源的缓存分为两种类型:强缓存和协商缓存。强缓存主要通过`Cache-Control`或`Expires`响应头来控制...
http中302与304
卷心菜投手
06-21 1万+
302----------------------------重定向官方解释:        302重定向又称之为302代表暂时性转移(Temporarily Moved ),英文名称:302 redirect。 也被认为是暂时重定向(temporary redirect),一条对网站浏览器的指令来显示浏览器被要求显示的不同的URL,当一个网页经历过短期的URL的变化时使用。一个暂时重定向是一种服...
理解HTTP缓存和304状态码
不能说的秘密的博客
07-30 3万+
最近研究nginx日志的时候,对于304这个状态码产生了好奇。之前一直知道3XX系列的状态码表示重定向,但对于304的具体原理没有仔细研究过。304 的标准解释是:客户端有缓冲的文档并发出了一个条件性的请求。服务器告诉客户端,原来缓冲的文档还可以继续使用。完成这个几个动作包括服务器确认返回304给予客户端,主要包含几个http头信息,请求头If-None-Match、响应头ETag和响应头Cache
http请求时返回的304是干什么的
isunlight001的专栏
03-13 3万+
请求成功时,返回的是200,那么返回的304是什么意思呢? 如上图,200和304有什么区别呢? 看下http的响应头: 刷新一次,对比下 这次请求的头信息中多了一条If-Modified-Since,而且返回的响应中,状态变为了304,这是怎么回事? 这次请求的头信息中多了一条If-Modified-Since,而且返回的响应中,状态变为了304,这是怎么回事?还记得红薯那...
http 304发生了啥?怎么解决?
liurong1028的博客
12-04 6780
       如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。   该响应必须包含以下的头信息:   Date,除非这个服务器没有时钟。假如没有时钟的服务器也遵守这些规则,那么代理服务器以及客户端可以自行将 Date 字段添加到接收到的响...
请解释一下http请求中的304状态码的含义
学亮编程手记
02-06 3122
请解释一下http请求中的304状态码的含义 304 未被修改。 自从上次请求后,请求的网页未被修改过。服务器返回此响应时,不会返回网页内容。 如果网页自请求者上次请求后再也没有更改过,你应将服务器配置为返回此响应码(称为if-modified-since http标头)。服务器可以告诉浏览器自从上次抓取后网页没有变更,进而节省带宽和开销。 ...
HTTP 304状态码的详细讲解
热门推荐
谦怀
10-25 17万+
HTTP 304状态码的详细讲解 304状态码或许不应该认为是一种错误,而是对客户端有缓存情况下服务端的一种响应。   整个请求响应过程如下: 客户端在请求一个文件的时候,发现自己缓存的文件有 Last Modified ,那么在请求中会包含 If Modified Since ,这个时间就是缓存文件的 Last Modified 。因此,如果请求中包含 If Modified Since,...
HTTP中的响应协议及302、304的含义
06-02 3万+
5 响应协议 5.1 响应内容 响应协议的格式如下: 响应首行; 响应头信息; 空行; 响应体。   响应内容是由服务器发送给浏览器的内容,浏览器会根据响应内容来显示。 HTTP/1.1 200 OK[崔1]  Server: Apache-Coyote/1.1 Content-Type: text/html;charset=U
http 返回304
08-24
HTTP返回304状态码表示资源未修改。当浏览器发送一个请求时,会在请求头中包含一个If-Modified-Since字段,该字段的值是上次请求该资源时服务器返回的响应头中的Last-Modified字段的值。如果服务器发现请求的资源在上次请求之后没有发生修改,那么就会返回一个304状态码,告诉浏览器可以使用本地缓存的资源。这样可以减少不必要的数据传输,提高网页加载速度。如果资源没有被修改,服务器不会再次发送资源给浏览器,而是让浏览器使用本地的缓存文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [http请求时返回的304是干什么的](https://blog.youkuaiyun.com/bestxiaok/article/details/88541094)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [理解HTTP缓存和304状态码](https://blog.youkuaiyun.com/canot/article/details/76359917)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
weixin_33758863

博客等级

码龄10年
145
原创
173
点赞
1090
收藏
6985
粉丝
关注
私信

热门文章

  • chown -R命令的使用 33467
  • [解决办法]已经安装了数字证书,但是谷歌浏览器登录https协议的web系统时仍然提示证书不受信任... 26684
  • Faiss优化:针对OMP_NUM_THREADS环境变量设置的测试验证 11756
  • CSMA/CD工作原理 11490
  • There was a problem importing one of the Python modules required to run yum 9732
上一篇:
【编译打包】haproxy 1.4.23
下一篇:
squid之反向代理服务器

最新评论

  • PCL中的OpenNI点云获取框架(OpenNI Grabber Framework in PCL)

    Michael_Wang9898: 现在的pcl_12.0,pcl::Grabber* interface = new pcl::io::OpenNIGrabber(); 变成了 pcl::Grabber* interface = new pcl::io::OpenNI2Grabber();

  • WPF 问题 PresentationCore.dll!System.Windows.Media.Composition.DUCE.Channel.SyncFlush() 分析

    weixin_37827303: 我也遇到这个报错了,但是仅仅是在用,netreactor混淆以后才会出现这个报错

  • plsql中文乱码问题(显示问号)

    fj3k2: 亲测有用 mark一下

  • [SAP ABAP开发技术总结]选择屏幕——SELECT-OPTIONS

    huzheng1123: 引用「mara,marc」 有没有大佬说一下这是什么意思

  • Faiss优化:针对OMP_NUM_THREADS环境变量设置的测试验证

    yy1773223909: 测试代码是啥?

最新文章

  • 【Python】多线程
  • VC实现微秒(十万分之一秒)休眠
  • Delphi写的等待进程运行结束函数
2019年371篇
2018年669篇
2017年962篇
2016年583篇
2015年406篇
2014年321篇
2013年303篇
2012年289篇
2011年208篇
2010年139篇
2009年117篇
2008年84篇
2007年64篇
2006年34篇
2005年20篇
2004年7篇
2002年2篇

目录

展开全部

收起

相关专栏

ABAP 百科全书

专栏

582 人学习

如果想系统学习 ABAP,请使用笔者另一套教程《零基础快速学习 ABAP》。 本教程是笔者 17 年使用 ABAP 中积累的零散知识点,没有系统整理过,请大家根据实际需要决定是否订阅。 为避免有些人恶意搬运文章,象征性设置成付费专栏。

HTTP 200 OK 与 304 Not Modified 在 SAP 应用中的缓存逻辑全解析

008 - 联网协议与网络通信编程

专栏

37 人学习

008 - 联网协议与网络通信编程

【异常】“304 Not Modified” 是HTTP协议中的一种状态码,用于表示客户端请求的资源自上次获取以来没有发生修改,因此服务器无需返回完整的资源内容,仅告知客户端可以使用本地缓存的版本。

服务器技术解决方法

专栏

49 人学习

该专栏是用来记录服务器开发遇到的相关问题,比如Linux,Nginx,Git等。从复现问题到分析问题,再到解决问题,从而做到知其然,知其所以然。

HTTP请求返回304状态码以及研究nginx中的304

目录

展开全部

收起

上一篇:
【编译打包】haproxy 1.4.23
下一篇:
squid之反向代理服务器

最新文章

  • 【Python】多线程
  • VC实现微秒(十万分之一秒)休眠
  • Delphi写的等待进程运行结束函数
2019年371篇
2018年669篇
2017年962篇
2016年583篇
2015年406篇
2014年321篇
2013年303篇
2012年289篇
2011年208篇
2010年139篇
2009年117篇
2008年84篇
2007年64篇
2006年34篇
2005年20篇
2004年7篇
2002年2篇

目录

评论
被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值