注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

ATS之HTTP 代理缓存相关机制分析  

2013-05-15 20:02:41|  分类: trafficserver编 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 . Traffic Server 处理请求的过程

  1)用户请求一个 web 对象,ATS 收到请求

  2)TS 通过对象的地址,在对象数据库(缓存)中去定位该对象

      a.如果对象在缓存中,ATS 会检查对象是否新鲜(fresh

           如果新鲜,ATS 从缓存里返回该对象给用户,此时称为缓存命中(cache hit)

           如果不新鲜(stale),ATS 会连接源服务器去验证对象是否仍然新鲜,即重新验证(revalidation),如果仍然新鲜,ATS 立即将缓存中的副本返回给用户

      b.如果对象不在缓存中(缓存未命中,cache miss),或者缓存的副本不再有效,ATS 会去源服务器获取对象,然后同时做下面两件事

           将对象返回给用户

           将对象放到本地缓存中

2. Traffic Server 判断 HTTP 对象是否新鲜(fresh)的过程

  • 如果有 Expires 或者 max-age 头部直接定义缓存的过期时间,TS将对比当前时间和过期时间去判断对象是否新鲜
  • 如果没有上述头部,TS 将检查 Last-Modified 和 Date 头部(其中Date是源服务器返回对象的时间,如果没有 Last-Modified 头部,TS 会用对象写入缓存的时间以作代替),然后用以下公式算出新鲜的时间范围(freshness_limit,可理解为保质期):
                         freshness_limit = ( Date - Last-Modified ) x 0.1
    0.1 这个参数可以作调整,并且能限制 freshness_limit 的上下限,默认最小是 1 小时,最大是 1 天
  • 如果没有 Expires 头部或者没有 Last-Modified、Date 头部,TS 将使用默认的 fressness limit
  • 另外,TS 还会检查 cache.config 配置文件中的 revalidate 规则,该规则可以对特定的 HTTP 对象设置特定的验证时间(特定的域名、IP、一定规则的 URL、特定的客户端等等)

3. 缓存过期(stale),Traffic Server 去源服务器重新验证对象可能的情况

  • 仍然 fresh,ATS 重置 freshness_limit,并返回对象
  • 对象新副本可用,ATS 缓存新对象,并同时返回给用户
  • 源服务器上的对象不再存在,ATS 也不再返回该副本给用户
  • 源服务器没有响应,ATS 返回过期的对象并发出警告。
  评论这张
 
阅读(160)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017