• varnish-4.x VCL之grace mode


    varnish-4.x VCL之grace mode&retry

    grace mode
    几点说明:
    graced object是己经过期了但仍然保留在cache中的对象
    当varnish使用graced object的时候称为grace mode
    当后端server不可用时,grace mode仍然可以用graced object来响应客户端的请求
    beresp.grace定义的时间为beresp.ttl过期后的仍然可用的时间
    grace mode的主要目标是,当热度非常高的对象过期了,但此时,一直等待后端的新见容无果,这时对于大量的客户端对列仍然用graced object来响应

    示例:
    后端HTTP Header
    "Cache-control: max-age=60, stale-while-revalidate=30"
    或VCL
    set req.ttl = 60s;
    set beresp.grace = 30s;

    • 50s: Normal delivery
    • 62s: Normal cache miss, but grace mode possible
    • 80s: Normal cache miss, but grace mode possible
    • 92s: Normal cache miss, object is removed from cache
    <=req.ttl直接返回给客户,beresp.grace清除cache重新向后端server请求
    提示: 缓存对象永不过期,可以beresp.grace = 0

    测试:
    通过apache cgi脚本
    cat >/var/www/cgi-bin/test.cgi <<HERE
    #!/bin/sh
    sleep 10
    echo "Content-type: text/plain"
    echo "Cache-control: max-age=10, stale-while-revalidate=20"
    echo
    echo "Hello world"
    date
    HERE
    修改max-age,stale-while-revalidate的值,测试HTTP Header

    retry
    sub vcl_backend_response {
        if (beresp.status == 503) {
        return (retry);
        }
    }
    如果retry的次数达到了max_retries, 就会触发 vcl_backend_error.
  • 相关阅读:
    css代码建议
    分别获取json对象的键值
    d3.time.format时间模式
    d3.js学习笔记 -- 尺度
    解决slideDown()、slideUp()执行结束后才执行下一次,导致鼠标离开后很久动画依然在执行的问题
    正则表达式
    href="#"与href="javascript:void(0)"的区别
    jQuery手动触发事件
    ajax请求超时
    模态框遮罩层,兼容IE
  • 原文地址:https://www.cnblogs.com/lixuebin/p/10814125.html
Copyright © 2020-2023  润新知