[HTTP] response code:304 节省客户端流量
2013-12-16 11:59
302 查看
[HTTP] response code:304 节省客户端流量
If-Modified-Since是标准的HTTP/1.1请求头标签,在发送HTTP请求时,把服务器被请求访问内容的最后修改时间一起发到服务器去,服务器会把这个时间与被请求内容的最后修改时间进行比较,如果条件符合,则服务器返回responseCode:304,并且不带任何数据流量内容。根据这样的特征,客户端在重复访问服务器资源时可以直接使用之前的缓存,在保证数据是最新的同时还避免重复读取下载资源。是否返回304的算法如下:原版点击这里
1.首先是错误判断:会造成其它访问错误结果的访问请求都无法使"If-Modified-Since"生效;如果"If-Modified-Since"传参的时间值格式错误或时间值大于服务器的当前时间,也无法使"If-Modified-Since"生效。
2.如果服务器被请求访问的文件已经自传参的时间之后有修改过,则服务器按正常的"GET"请求返回结果(一般是"200") 。
3.在正常请求及传参正确的情况下,如果被请求访问的文件自传参时间之后都还未修改过,服务器才会返回"304"。
虽说规定是这样规定的,但仍有两个点需要注意如下:
1. "If-Modified-Since" 所传参的时间值及格式是否正确是由服务器决定的,而服务器的时钟一般都不与客户端同步,所接受的时间格式一般为"HTTP-date",如"Sat, 29 Oct 1994 19:43:31 GMT"。
2. 有些服务器在处理"If-Modified-Since"头信息时,对时间值的判断并不是使用小于判断,而是确切的等于判断。所以为了得到最大适用范围的准确返回结果,传参内容最好使用上一次链接时从头信息里得到的"Last-Modified"的内容。见下图一。
图一. Last-Modified示例
相关文章推荐
- response code:304 节省客户端流量
- HTTP 304客户端缓存优化的神奇作用和用法
- 14.http 304优化,了解客户端缓存
- http 304优化,了解客户端缓存
- 【http】使用浏览器Cache和http状态码304实现的客户端缓存
- HTTP 304客户端缓存优化的神奇作用和用法
- http 304优化,了解客户端缓存
- http 304优化,了解客户端缓存
- http 304优化,了解客户端缓存
- 通俗易懂客户端与服务器端交互原理(HTTP数据请求与HTTP响应,包括Servlet部分
- Http之客户端请求服务器,服务器响应客户端。通过Handler在主线程中读取数据
- HTTP 请求未经客户端身份验证方案“Anonymous”授权。从服务器收到的身份验证标头为“Negotiate,NTLM”。
- iOS开发网络篇之:ASIHTTPRequest流量监控
- 利用HttpModule做流量记录
- Android网络(3):HttpClient作客户端,Tomcat Servlet作服务器的交互示例
- 从客户端,通过HttpClient发送二进制数据到服务器端
- 模拟手机客户端与Web应用的交互[URL和HttpURLConnection的使用]
- 新闻客户端——SmartImageView——AsyncHttpClient
- 简单的http客户端
- golang HTTP客户端