304

Not Modified

官方
由于没有发生变化,该资源不需要重新传输。

HTTP状态代码304的规范

304 Not Modified状态代码表明已经收到了一个有条件的GET或HEAD请求,如果不是因为条件被评估为假的话,它本来会产生一个200(OK)响应。换句话说,服务器没有必要传输目标资源的表示,因为该请求表明,提出有条件请求的客户端已经有一个有效的表示;因此,服务器正在重定向客户端,使其使用存储的表示,就像它是一个200(OK)响应的内容一样。

生成 304 Not Modified 响应的服务器必须生成以下任何一个头域,这些头域将在对同一请求的 200(OK)响应中被发送:

  1. Content-Location、Date、ETag和Vary
  2. Cache-Control和Expires(见[CACHING])

由于304 Not Modified响应的目标是在接收者已经有一个或多个缓存表征时尽量减少信息传输,发件人不应该生成上述字段以外的表征元数据,除非上述元数据是为了指导缓存更新而存在的(e.g.,如果响应没有ETag字段,Last-Modified可能是有用的)。

收到304 Not Modified响应的缓冲区的要求在[CACHING]的第4.3.4节中定义。如果有条件的请求来自于出站的客户端,例如拥有自己的缓存的用户代理向共享代理发送有条件的 GET,那么代理应该将 304 Not Modified 响应转发给该客户端。

304 Not Modified 响应由头部分的结尾终止;它不能包含内容或拖车。

来源/引自: 304 Not Modified HTTP状态代码由15.4.5的RFC9110部分指定。

HTTP协议

正在进行中的工作

如何用PHP抛出一个304状态代码?

要在一个网页上抛出HTTP状态代码304,可以使用PHP函数http_response_code。其语法如下: http_response_code(304) (PHP 5 >= 5.4.0, PHP 7, PHP 8)

测试304 HTTP状态代码

为了能够在客户端显示HTTP状态代码(本例中为304 Not Modified)和其他信息,必须用F12打开开发控制台。然后导航到 "网络 "标签。现在可以打开页面,网站(例如index.php)应该在网络标签中可见。这必须被选中,然后必须选择Herder部分。然后,用户将看到以下结果:

状态代码 304 Not Modified
概述
URL: https://http-statuscode.com/errorCodeExample.php?code=304
状况: 304 Not Modified
那些: Network
IP地址: XX.XX.XX.XX
状态代码 304 Not Modified

304状态代码的浏览器兼容性

Chrome Yes
Edge Yes
Firefox Yes
Opera Yes
Safari Yes
Chrome Android Yes
Firefox for Android Yes
Opera Android Yes
Safari on iOS Yes
Internet Yes
WebView Android Yes

编程语言中的常量

http.StatusNotModified
Response::HTTP_NOT_MODIFIED
:not_modified

博客文章

缓存和 HTTP 状态代码:通过智能缓存优化网络性能

网站性能和由此带来的用户体验是任何网站成功的核心要素。影响性能的一个重要因素是 HTTP 状态代码,尤其是在缓存策略中。其中一个经常被忽视但却能产生重大影响的状态代码是代码 304,也称为 "未修改"。什么是 H...

作者: Tony Brüser
作者: Tony Brüser

Tony Brüser 是一位热衷于 HTTP 状态代码的网络开发人员。

LinkedInGitHub