http-headers服务器返回的首部错误码304
2013-12-16 11:05
218 查看
一、304定义
Not Modiied,意即:客户端可以通过所包含的请求首部,使其请求变成有条件的。如果客户端发起了一个有条件的GET请求,而最近资源未被修改过的话,就可以用这个状态码来说明资源未被修改。带有这个状态码的响应不应该包含主体部分。
我们要巧妙理解这这个定义,这相当于客户端和服务器端的一个条件约束,你问我要东西,我给你东西,并且我返回给你一个条件标识,(如果你发现这个标识,请你在本地缓存一下你刚才要的资源)下一次你再问我要的时候请也带着这个标识过来,我服务器端发现你带了这个标识,并且用它来检测你要的资源是否在间隔时间内有变动,如果没有变动,我直接就返回给你304,告诉你我这里没变,你直接取自己的缓存好了。这样我就没有必要把资源实体返回给你,大大节省了网络资源。
那么我们就可以用304来做一个请求图片的例子:
大家可以随便自己下载一个jpg的图片,然后重命名成test.jpg然后和脚本放到同一个目录下测试,多刷新几次。
Not Modiied,意即:客户端可以通过所包含的请求首部,使其请求变成有条件的。如果客户端发起了一个有条件的GET请求,而最近资源未被修改过的话,就可以用这个状态码来说明资源未被修改。带有这个状态码的响应不应该包含主体部分。
我们要巧妙理解这这个定义,这相当于客户端和服务器端的一个条件约束,你问我要东西,我给你东西,并且我返回给你一个条件标识,(如果你发现这个标识,请你在本地缓存一下你刚才要的资源)下一次你再问我要的时候请也带着这个标识过来,我服务器端发现你带了这个标识,并且用它来检测你要的资源是否在间隔时间内有变动,如果没有变动,我直接就返回给你304,告诉你我这里没变,你直接取自己的缓存好了。这样我就没有必要把资源实体返回给你,大大节省了网络资源。
那么我们就可以用304来做一个请求图片的例子:
<?php $fn = './test.jpg'; $headers = apache_request_headers(); if (isset($headers['If-Modified-Since']) && (strtotime($headers['If-Modified-Since']) == filemtime($fn))) { // Client's cache IS current, so we just respond '304 Not Modified'. header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fn)).' GMT', true, 304); } else { // Image not cached or cache outdated, we respond '200 OK' and output the image. header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fn)).' GMT', true, 200); header('Content-Length: '.filesize($fn)); header('Content-Type: image/png'); print file_get_contents($fn); }
大家可以随便自己下载一个jpg的图片,然后重命名成test.jpg然后和脚本放到同一个目录下测试,多刷新几次。
相关文章推荐
- web服务器读写权限可能会引起HttpSendRequest返回错误码12152
- seo复习,使用插件ieHTTPHeaders查看服务器返回的http协议报头
- HTTP协议中GET、POST和HEAD的介绍 2008-05-10 14:15 GET: 请求指定的页面信息,并返回实体主体。 HEAD: 只请求页面的首部。 POST: 请求服务器接受所指定的文
- 图解http(返回结果的HTTP状态码四 与http协作的web服务器五 http首部六)
- HTTP返回代码 201 304 404 500等代表的含义
- HttpClient get和HttpClient Post请求的方式获取服务器的返回数据
- iPhone开发:通过NSURLRequest获得服务器返回的http header和http status
- iPhone开发:通过NSURLRequest获得服务器返回的http header和http status
- (swift)Alamofire如何http通信post信息给服务器并获得返回信息
- URL和HttpURLConnection的使用(向服务器发送请求,然后返回struts版)
- 怎么通过http向服务器发送数据并接受到返回的数据
- HttpClient和HttpURLConnection获取服务器返回的内容
- HTTP返回代码 201 304 404 500等代表的含义
- HttpUrlConnection Post提交数据到服务器、并得到服务器返回的数据
- 利用httpWebrequest 向服务器发送请求,并返回结果.
- WINSocket编程 发生HTTP GET请求,并接收服务器返回
- csdn服务器给我返回http 500, 呵呵哒!------后来才知道, 每天最多写5篇, 我晕啊, 能给个友好点的提示不?
- 与http协作的web服务器、http首部(第五章、第六章)
- Android 客户端通过内置API(HttpClient) 访问 服务器(用Spring MVC 架构) 返回的json数据全过程
- HttpWebResponse远程服务器返回错误: (500) 内部服务器错误 的解决办法