IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]HTTP协议之响应头Date与Age

    xifeijian发表于 2015-06-11 18:27:29
    love 0
    HTTP没有为用户提供一种手段来区分响应是缓存命中的,还是访问原始服务器得到的。客户端有一种方法能判断响应是否来自缓存,就是使用Date首部。将响应中Date首部的值与当前时间进行比较,如果响应中的日期值比较早,客户端通常就可以认为是来自缓存的;客户端也可以通过Age首部来检测缓存的响应,通过这个首部可以分辨出这条响应的使用期。否则,则认为是来自原始服务器中的。

    Date:Date头域表示消息发送的时间,时间的描述格式由RFC822定义。例如,Date: Thu, 11 Jul 2015 15:33:24 GMT。

    Age:当代理服务器用自己缓存的实体去响应请求时,用该头部表明该实体从产生到现在经过多长时间了。

    以下以请求百度为例,get http://www.baidu.com/,返回200,响应Date从下图可以看到。


    再看另一个静态资源请求,get http://s1.bdstatic.com/r/www/cache/static/jquery/jquery-1.10.2.min_f2fb5194.js,HTTP响应码为304,Date和Age在下图中可以看到,Date与主请求http://www.baidu.com/一致,未命中代理缓存服务器,该资源从原始服务器中获得。

    假设该请求Date比当前时间要早,并且如果Date+Age(秒)与主请求http://www.baidu.com/中的Date一致,那么可以认为从代理缓存服务器中获取资源,缓存命中。






沪ICP备19023445号-2号
友情链接