我想仅向具有管理权限的用户提供生成的资源,我希望Varnish为我缓存它,因此后端不必在每次请求时重新生成它。我不想在后端执行缓存,因为我有Varnish用于此目的。
这是我的后端所做的伪代码:
if (authenticated(cookie))
{
if (stale)
{
regenerate_and_send()
}
else
{
not_modified()
}
}
else
{
access_denied()
}
所以我想到Varnish执行验证(条件GET)和后端响应"未修改","访问被拒绝"或" 200 OK" HTTP状态(当然在最后一种情况下重新生成资源)。
我需要Varnish将cookie传递给后端,但是在将资源存储在缓存中时忽略cookie,因此只存储一个副本。
我该怎么做?
易于执行验证并编写后端逻辑。我如何处理Varnish中的cookie,这样它们不会影响缓存,但仍会传递到后端?
答案 0 :(得分:1)
默认情况下,如果请求有cookie,Varnish将不会查看缓存,因此您必须编写自己的vcl配置文件。
如果我正确理解您的问题,可以将相关资源提供给所有管理员特权用户。这里的故事是;每个用户都有一个不同的会话cookie,而varnish无法知道哪个会话cookie是管理员特权的。你可以做(至少)两件事: