Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Caching 清漆缓存-缓存403响应_Caching_Varnish_Varnish Vcl - Fatal编程技术网

Caching 清漆缓存-缓存403响应

Caching 清漆缓存-缓存403响应,caching,varnish,varnish-vcl,Caching,Varnish,Varnish Vcl,我们在一个AWS S3桶前使用清漆,运行得非常好,我们有98.4%的命中率,这使我们避免了非常大的S3账单 我们的应用程序现在需要能够请求可能存在或可能不存在的文件。发生这种情况时,Varnish将向S3发出请求并收到403(权限被拒绝)响应。我们在vcl_error函数中捕获该响应,因为它允许我们显示自定义错误消息。由于我们预计每秒有400-500个请求,其中40%是针对尚不存在的文件的请求,因此S3将遇到成本问题 我的问题是,是否可以让Varnish记住文件返回403并返回缓存响应?我想在从

我们在一个AWS S3桶前使用清漆,运行得非常好,我们有98.4%的命中率,这使我们避免了非常大的S3账单

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

我的问题是,是否可以让Varnish记住文件返回403并返回缓存响应?我想在从后端请求文件之前等待5分钟。我们正在运行清漆3

我已经阅读了一些文档,这些文档似乎表明我可以在vcl_错误函数中使用“set obj.ttl=5m;”,但这似乎不起作用

谢谢!
艾伦

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

清漆3:

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

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