HTTP GET 304


基本概念:

304 Not Modified
如果客户端发送了一个带条件的GET请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾,也就是body必须为空

Etag:
etag只是一个资源的标记,可以使用 sha1sum,也可以使用 md5sum作为值,但是需要注意的是值需要前后加上双引号""(参考标准协议)
例如:Etag: "618c4443bdf5761d070c44d1b0865137f56fd779"

Last-Modified:
Last-Modified的属性标记此文件在服务期端最后被修改的时间
例如:Last-Modified: Wed, 17 Feb 2016 14:06:10 GMT


服务器如何判断是否返回304,下面提供一段python代码参考:
# If-None-Match,客户端传上来的Etag
# If-Modified-Since,客户端传上来的Last-Modified
# Etag,服务器值
# LastModified,服务器值
def if304(IfNoneMatch, IfModifiedSince, Etag, LastModified):
    if not IfNoneMatch and not IfModifiedSince:
        return False
    if IfNoneMatch and (IfNoneMatch != Etag):
        return False
    if IfModifiedSince and (IfModifiedSince != LastModified):
        return False
    return True


End;


你可能感兴趣的:(http)