`
- 浏览:
48187 次
- 性别:
-
对 HTTP 304 的理解
最近和同事一起看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 的一个理解。这是copy from http://bulaoge.com/topic.blg?dmn=webdev&tid=301677
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
它由3位数字和原因短信组成,数字中的第一位指定了响应类别,后两位无分类。响应类别有以下5种:信息性状态码、成功状态码、重定向状态码、客户端错误状态码、服务器错误状态码。 信息性状态码(1XX) * 100 ...
2xx:成功,行为被成功地接受、理解和采纳 3xx:重定向,为了完成请求,必须进一步执行的动作 4xx:客户端错误,请求包含语法错误或者请求无法实现 5xx:服务器错误,服务器不能实现一种明显无效的请求 常见的 HTTP...
理解HTTP状态代码对于网页开发、搜索引擎优化(SEO)以及排查网络问题至关重要。 1xx(临时响应)状态代码,如100(继续)和101(切换协议),表明服务器已经接收到部分请求,并且客户端需要继续发送请求的剩余部分...
理解HTTP状态码对于开发人员、运维人员及网络管理员来说至关重要。通过这些状态码,可以快速判断出请求的状态,从而采取相应的措施解决问题。例如,当遇到404状态码时,说明请求的资源不存在;当遇到503状态码时,则...
HTTP协议的状态码是其核心组成部分,它提供了对请求处理结果的反馈,帮助开发者理解和解决可能出现的问题。以下是对HTTP协议错误码(状态码)的详细解析: 1xx:信息消息 100 Continue:这是服务器在接收到客户端的...
HTTP服务器状态码是HTTP协议中用来表示客户端请求与服务器交互情况的一种编码方式,它由三位数字组成,分为五类:1xx(信息性...理解HTTP状态码能够帮助开发者和测试人员定位和解决问题,确保系统的稳定性和正确性。
- **优化性能**:使用缓存相关的状态码(如304和206)可以减少数据传输,提高页面加载速度。服务器通过发送适当的缓存控制指令(如Cache-Control),可以使浏览器缓存内容,减少不必要的网络请求。 - **用户体验**:...
### HTTP状态码详解 HTTP状态码是Web服务器与客户端(如浏览器)通信的重要组成部分,用于指示请求的结果。...每个状态码都有其特定的含义和应用场景,正确理解和使用HTTP状态码对于开发健壮的网络应用至关重要。
- **304 Not Modified**:自从上次请求后,请求的资源未修改过。 - **305 Use Proxy**:必须通过代理访问所请求的资源。 - **307 Temporary Redirect**:请求的资源现在临时从不同的URI响应请求。 - **4xx**:...
### HTTP理论详解 #### 1. HTTP协议的基本概念 ...通过对HTTP请求与响应结构的理解,以及对常见状态码的掌握,可以帮助开发者更有效地设计和调试Web应用,同时也为网络故障排查提供了重要的依据。
HTTP状态编码是HTTP响应中的一个三位数字,它传达了服务器对客户端请求的处理结果。理解这些状态码对于诊断网络问题、优化网站性能以及确保搜索引擎能够正确抓取网站内容至关重要。 1xx(临时响应): 100(继续)...
HTTP 返回状态码表 HTTP 返回状态码是 Hypertext Transfer Protocol(超文本传输协议)中的一种...了解 HTTP 返回状态码对 Web 开发和维护非常重要,它可以帮助我们快速地定位问题所在,提高网站的可靠性和可维护性。
- **304 Not Modified**:如果请求包含允许的If-Modified-Since头信息,而资源还没有更新,则返回此状态码。 - **307 Temporary Redirect**:请求的资源现在临时从不同的URI响应请求,后续请求应仍使用原来的URI。 ...
本文将详细介绍HTTP状态码的各种类型及其含义,帮助读者更好地理解和处理HTTP响应。 #### 一、1xx 信息性状态码 1xx状态码表示接收到请求并且正在处理。这些状态码主要用于通知客户端后续的动作,但客户端无需为此...
HTTP(超文本传输协议)是互联网上应用...以上是对HTTP状态代码的全面解析,这些代码不仅有助于理解HTTP通信的基本机制,也是调试网络应用时的重要工具。掌握它们,可以帮助开发者和运维人员更有效地定位和解决问题。
HTTP状态码用于表示Web服务器对客户端...这些状态码对于理解HTTP协议的行为至关重要,尤其是在开发Web应用和服务时。掌握这些状态码有助于开发者更好地调试问题、优化性能,并确保应用程序能够正确地响应各种情况。
- **303 查看其他位置**:请求者应该对不同的位置使用单独的GET请求来获取响应。 - **304 未修改**:自上次请求后,请求的资源未被修改。在这种情况下,服务器返回304而不返回资源的内容。 - **305 使用代理**:请求...