304状态码前后的具体流程

首先304状态码或许不应该认为是一种错误,而是对客户端有缓存情况下服务端的一种响应。

       客户端在请求一个文件的时候,发现自己缓存的文件有 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,从而大大的降低带宽的消耗,对于用户的感觉也是提高。

  通常来说,缓存是个好东西.如果你想提高自己网站的访问速度,缓存是必须要考虑的。可是在调试的时候,有时候需要阻止缓存,这样才能确保你所访问到的资源是最新的。

原文地址:https://www.cnblogs.com/xinsir/p/9490817.html

时间: 2024-08-12 21:31:22

304状态码前后的具体流程的相关文章

304状态码--摘自百科

1定义编辑 如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码. 简单的表达就是:客户端已经执行了GET,但文件未变化. 2什么情况下会返回304状态码编辑 客户端是怎么知道这些内容没有更新的呢?其实这并不是客户端的事情,而是你服务器的事情,大家都知道服务器可以设置缓存机制,这个功能是为了提高网站的访问速度,当你发出一个GET请求的时候服务器会从缓存中调用你要访问的内容,这个时候服务器就可以判断

分析HTTP请求返回304状态码

大家好,今天给大家分享一个状态码304,大家可能在以前的开发中打开chrome tools 或 firebug工具时有意间或无意间看到它. HTTP 304: Not Modified 标准解释是:Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档).服务器告诉客户,原来缓冲的文档还可以继续使用.如下图: 在请求头里有:If-Modified-Since: Mon, 17 Aug 2015 01:5

9. http协议_响应状态码_页面渲染流程_路由_中间件

1. http协议 超文本传输协议 协议详细规定了 浏览器 和 万维网服务器 之间互相通信的规则 客户端与服务端通信时传输的内容我们称之为报文(请求报文.响应报文) 常见的发送 get 请求方式 在浏览器地址栏输入 url 地址访问 所有的标签默认发送的是 get 请求:如 script link img a... form 表单默认也是 get 请求 常见的发送 post 请求方式 只能通过 form 表单,设置 method="post" 发送 ajax 可以发送任意请求 2. 响

【http】http的方法,状态码和组成部分

Http(Hypertext Transfer Protocol) HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议.它可以使浏览器更加高效,使网络传输减少.它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等. 用于http协议交互的信息被称为http报文.请求端(客户端)的http报文叫做请求报文,响应端(服务器)的叫做响应报文. 请求报文由请

HTTP协议 (六) ---状态码

状态码 201-206都表示服务器成功处理了请求的状态代码,说明网页可以正常访问. 200(成功)  服务器已成功处理了请求.通常,这表示服务器提供了请求的网页. 201(已创建)  请求成功且服务器已创建了新的资源. 202(已接受)  服务器已接受了请求,但尚未对其进行处理. 203(非授权信息)  服务器已成功处理了请求,但返回了可能来自另一来源的信息. 204(无内容)  服务器成功处理了请求,但未返回任何内容. 205(重置内容) 服务器成功处理了请求,但未返回任何内容.与 204 响

常见的HTTP状态码深入理解

状态码的职责是当客户端向服务器端发送请求时,描述返回请求结果.借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了什么错误. RFC2616定义的状态码,由3位数字和原因短信组成. 数字中的第一位指定了响应类别,后两位无分类.响应类别有以下5种: Type Reason-phrase Note 1XX Informational 信息性状态码,表示接受的请求正在处理 2XX Success 成功状态码,表示请求正常处理完毕 3XX Redirection 重定向状态码,表示需要客户端需要

HTTP 报文 之 HTTP 状态码

如前面所示,HTTP 状态码被分成了五大类.本节对这五类 HTTP 状态码中的每一类都进行了总结. 100~199--信息性状态码 HTTP/1.1 向协议中引入了信息性状态码.这些状态码相对较新,关于其复杂性和感知价值存在一些争议,而受到限制. 状态码 原因短语 含义 100 Continue  说明收到了请求的初始部分,请客户端继续.发送了这个状态码之后,服务器在收到请求之后必须进行响应.更多信息请参见附录 C 中的 Expect 首部介绍. 101 Switching Protocols

http请求头响应头及状态码列表

HTTP响应头和请求头信息对照表 HTTP请求头提供了关于请求,响应或者其他的发送实体的信息.HTTP的头信息包括通用头.请求头.响应头和实体头四个部分.每个头域由一个域名,冒号(:)和域值三部分组成. 通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联. 请求头标:允许客户端传递关于自身的信息和希望的响应形式. 响应头标:服务器和于传递自身信息的响应. 实体头标:定义被传送资源的信息.即可用于请求,也可用于响应. 根据以上分类的HTTP请求头介绍可以参考此文,本工具

状态码的分析

https://www.cnblogs.com/wxw16/p/6237548.html 状态码的分类 1xx :(表示信息性状态码)---- 接受请求正在处理 2xx:---(成功状态码)-----请求正常处理完毕 3xx------(重定向状态码)------ 需要进行附加操作以完成请求 4xx----(表示客户端出现错误)----服务器无法处理请求 5xx ----(表示服务器端错误)----服务器处理请求出错 200 OK 表示从客户端发来的请求在服务器端被正常处理了. 在响应报文中,随