`
yyyyy5101
  • 浏览: 151526 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

http 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错误的详细讲解

    HTTP 304 错误,也称为 "Not Modified",是HTTP协议中的一种状态码,用于指示客户端在发送请求时提供了缓存信息,并且服务器验证后发现客户端的缓存版本是最新的,无需重新发送完整的资源。这个状态码是HTTP缓存机制...

    C# MVC HttpModule 防盗链和图片304缓存

    304 Not Modified是一种HTTP状态码,表示客户端(浏览器)已经缓存了资源,并且该资源未发生变化,服务器无需发送完整内容。为了有效利用304缓存,我们需要设置合适的HTTP响应头。在HttpModule中,我们可以在`...

    ASP.NET Web API中未修改的HTTP 304

    **ASP.NET Web API 中未修改的HTTP 304详解** 在ASP.NET Web API中,HTTP 304状态码是用于实现HTTP缓存机制的一部分,特别是“Not Modified”(未修改)响应。这个状态码允许客户端(如浏览器)利用缓存副本,减少...

    HTTP 状态码 304 是什么意思.zip

    HTTP 状态码 304 是什么意思.zip

    301、404、200、304等HTTP状态意思

    下面,我们将详细解释标题和描述中提到的几个主要的HTTP状态码:301、404、200和304。 1. HTTP状态码200: "200 OK"是最常见的状态码,表示服务器成功处理了客户端的请求,并且返回了请求的数据。这通常意味着用户...

    理解 HTTP 状态码 304

    理解 HTTP 状态码 304

    web服务器缓存静态资源,更新静态资源的规则,静态资源如css,js文件 HTTP CODE 304.zip

    以下将详细介绍关于“web服务器缓存静态资源,更新静态资源的规则”以及HTTP状态码304的相关知识点。 首先,静态资源的缓存分为两种类型:强缓存和协商缓存。强缓存主要通过`Cache-Control`或`Expires`响应头来控制...

    计算机网络抓包实验

    例如,编号23的包显示了一条从10.2.137.27发出到128.119.245.12的HTTP GET请求,而编号30的包则是从128.119.245.12返回到10.2.137.27的HTTP 304 Not Modified响应,表明资源未修改,可以使用缓存。 在进行抓包实验...

    文件服务器的多种解决办法

    - **优点**:简单容易,支持HTTP304协议。 - **缺点**:上传的数据与Web应用程序混合在一起,可能导致数据丢失。 - **适用场景**:小规模应用。 2. **自编写下载程序** - **优点**:可以将数据放在Web程序外部...

    cacheable-site-silex:利用HTTP开发可缓存的站点。 该示例站点是使用Silex框架以PHP编写的

    利用HTTP开发可缓存的网站这段示例代码使用框架来说明如何利用HTTP...以控制生存时间基于Vary标头的缓存变化基于Etag标头的条件请求成功验证内容后返回HTTP 304状态代码基于Accept-Language标头的内容协商和语言选择使

    http协议的状态码200、301、304、404、502一览.docx

    * 304 Not Modified:服务器已经成功处理了客户端的请求,但自从上次客户端请求后,网页没有修改。 * 305 Use Proxy:客户端只能使用代理来访问服务器的网页。 4xx 客户端错误 这些状态码表示客户端可能出错,阻碍...

    HTTP返回代码 201 304 404 500等代表的含义.docx

    304(未修改)意味着服务器告诉客户端,请求的资源自上次请求后没有发生变化,节省了传输数据。 4xx(请求错误):这类错误代码表明请求有误,服务器无法处理。400(错误请求)表示服务器无法理解客户端的请求语法...

    php静态文件返回304技巧分享

    HTTP状态码304代表“Not Modified”(未修改),表示服务器允许浏览器使用本地缓存的文件。当浏览器再次向服务器请求某个已缓存的资源时,如果该资源未被修改,服务器通过发送304状态码来告诉浏览器可以直接使用缓存...

    git-guppy-pre-commit-hook:git-guppy 预提交钩子插件

    git-guppy-pre-commit-hook ...npm http 304 https://registry.npmjs.org/named-regexp npm http GET https://registry.npmjs.org/lazypipe npm http GET https://registry.npmjs.org/lodash npm http GET ht

    304与443性能差异比较[文].pdf

    在IT行业中,304和443通常与网络通信中的HTTP状态码和HTTPS端口号有关,而不是不锈钢材料。然而,根据提供的文件内容,这里主要讨论的是不锈钢304和443(21CT)的性能差异和应用场景,而非IT领域的概念。以下是关于...

    dist-server:启动静态服务器,这将减少Chrome的审核工作

    已正确发出HTTP 304,以指示自上次请求以来尚未修改资源 dist-server启动一个服务器,该服务器公开端口8000当前工作目录中的所有文件,并满足上述条件。 $ npm install -g dist-server $ dist-server Server ...

Global site tag (gtag.js) - Google Analytics