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

    trafficserver 目录正则刷新缓存

    linuxphp@qq.com(keminar)发表于 2015-12-11 19:02:00
    love 0
    贵贵的博客 ( http://blog.linuxphp.org/ ) :

    这是什么?

    • 为保证在服务器岩机时有一份缓存可用,在正常情况下能及时刷新缓存内容不至于太旧
    • 为能通过正则表达式来批量清除缓存内容,同时不对整个缓存进行遍历以至于托跨机器 ,关于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给出了具体如何使用。之所以没有采用是 由于本身业务已有监控日志刷新服务,不使用插件可保证业务独立性,可以后台动态添加 刷新目录等原因, 可能唯一问题是第一个访问人访问到的还是旧的,触发刷新后其他人才会 看到新内容,不过这个延迟还是可以接受的。

     

    ---

    代码在github上



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