我们在AWS S3铲斗前使用清漆,因为我们的命中率达到了98.4%,这使得我们从非常大的S3账单中获益,所以事情一直运行良好!
我们的应用程序现在需要能够请求可能存在或可能不存在的文件。当发生这种情况时,Varnish将向S3发出请求并收到403(许可被拒绝)响应。我们在vcl_error函数中捕获了该响应,因为它允许我们显示自定义错误消息。由于我们预计每秒会发出400-500个请求,其中大约40%是不存在的文件,但我们会遇到S3的成本问题。
我的问题是,是否有可能让Varnish记住该文件返回403并返回缓存的响应?我希望Varnish在从后端请求文件之前等待5分钟。我们正在运行Varnish 3。
我已经阅读过看似sugest的文档,我可以使用"设置obj.ttl = 5m;"在vcl_error函数中,但这似乎不起作用。
谢谢! 艾伦
答案 0 :(得分:3)
是的,你可以缓存它。只需检查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;
}
}