Find file History
Latest commit 598a8e7 Jan 28, 2016 @keminar bug fix
Permalink
..
Failed to load latest commit information.
README.md
libAtsCache.php
libBase.php
libRegex.php
logs_xml.config
tailAtsLog.php
tailAtsLog.sh

README.md

trafficserver cache manager

这是什么?

  • 为保证在服务器岩机时有一份缓存可用,在正常情况下能及时刷新缓存内容不至于太旧
  • 为能通过正则表达式来批量清除缓存内容,同时不对整个缓存进行遍历以至于托跨机器 ,关于ats自带的regex_delete测试中发现效率远远不行。

思路是怎样的?

  • 根据用户访问情况来进行缓存更新,如我设置缓存1小时失效,我发现age值超过300(也就是 内容生成超过5分钟)就手动更新缓存,更新时进行后端的状态检查。
  • 对于一些静态资源由于内容基本不会变化,所以跳过自动更新
  • 对于需要人工刷新的页面(如首页), 更新时用缓存内容回写,保证一直是旧内容
  • 目录刷新功能类似,每次取有效期内的规则列表,然后拿用户访问的URL匹配,如果链接 是在生效期前生成的且能匹配上正则更新缓存。

需要如何配置?

  • 除基本配置外,主要是ats的日志格式有要求,参考文件logs_xml.config
  • crontab定时每分钟执行tailAtsLog.sh文件来分析ats日志
  • 要清理的目录可以通过数据库读取,这里为方便解释主业务硬编码到了文件libRegex.php

其它

目录刷新来自于群里人的点拨,最开始是由一个regex_revalidate的插件实现,文章 http://www.ywjt.org/index.php/archives/883 给出了具体如何使用。之所以没有采用是 由于本身业务已有监控日志刷新服务,不使用插件可保证业务独立性,可以后台动态添加 刷新目录等原因, 可能唯一问题是第一个访问人访问到的还是旧的,触发刷新后其他人才会 看到新内容,不过这个延迟还是可以接受的。