caching - Varnish 缓存-缓存403响应

标签 caching varnish varnish-vcl

我们在AWS S3存储桶前使用 Varnish ,并且运行情况非常好,因为我们的命中率达到98.4%,这使我们免于超大型S3账单!

我们的应用程序现在需要能够请求可能不存在的文件。发生这种情况时,Varnish将向S3发出请求,并收到403(拒绝权限)响应。我们在vcl_error函数中捕获了该响应,因为它允许我们显示自定义错误消息。由于我们期望每秒处理400-500个请求,其中约40%用于不存在的文件,因此S3会导致成本问题。

我的问题是,是否可以让Varnish记住该文件返回了403并返回了缓存的响应?我希望Varnish等待5分钟,然后再从后端请求文件。我们正在运行Varnish 3。

我已经看过似乎很含蓄的文档,可以使用“set obj.ttl = 5m;”。在vcl_error函数中,但这似乎不起作用。

谢谢!
艾伦

最佳答案

是的,您可以缓存它。只需检查来自S3的响应状态码并设置ttl。

Varnish 3:

sub vcl_fetch {
    if (beresp.status == 403 || beresp.status == 404 || beresp.status >= 500)
    {
        set beresp.ttl = 3s;
    }
}

Varnish 4:
sub vcl_backend_response {
    if (beresp.status == 403 || beresp.status == 404 || beresp.status >= 500)
    {
        set beresp.ttl = 3s;
    }
}

关于caching - Varnish 缓存-缓存403响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30261005/

相关文章:

php - 缓存 jQuery 检索到的数据

varnish - 在数据库记录级别使用 Varnish 缓存

cluster-computing - Varnish 3.0.3 集群上的 PURGE

使用标准输出 Varnish 输出ReqEnd

Varnish (错误或配置错误)If-None-Match和If-Modified-Since始终为空白

symfony - 在学说实体保存期间更新/插入缓存条目

java - 使用结构/类来增加缓存空间局部性?

java - GWT - 防止 PDF 文件在 IE 中缓存?

正则表达式PCRE捕获URL中的多次出现查询字符串

Varnish 缓存v4 : Incorrect Backend Health Check Response