允许 Varnish 缓存,没有针对特定前端 cookie 的每个 cookie 缓存版本

Allow Varnish cache, without per-cookie cache version only for a specific front-end cookie

你好,

第一个 post 堆栈溢出 ;)

我只是想了解清漆的过程。 我还没有在 Internet 上找到我的问题的答案。

我有一个 Drupal 7 网站,正在开发中,它使用 Varnish (v4),一切正常。现在 Drupal 站点不再生成任何 cookie。

本网站将允许每个匿名用户管理一个"demand"(涉及多个页面),然后将此需求的内容发送到我们的后台。匿名用户没有用户管理或帐户管理。 为了提高性能,我安装了 Varnish,但这是我真正的第一次体验。

我想使用 jQuery + 一个 cookie 来存储所有相关信息来实现 "demand" 的过程。这样 Apache (v2.4) 将不会在每次请求时被调用。

我认为如果生成cookie,缓存过程将被varnish跳过。我想只对特定的前端 cookie 使用不带 per-cookie 缓存版本的 Varnish。

所以我想知道是否可以对 Varnish 说:

Hey Varnish even if this specific cookie is present (I mean managed, cookie CRUD), do not take care of it and continue to serve the cached page).

如果是,你能给我解释一下逻辑吗?

提前谢谢你。

马特

每次应用程序生成 cookie 时,它​​都会向浏览器发送 Set-Cookie header可以存储新的cookie。如果 Varnish 发现这个 header 它默认不缓存。发生这种情况是为了不会错误地将 cookie 设置到其他人的浏览器。总而言之,如果你想缓存一个页面,请不要在其中操作 cookie。

但是您可以使用AJAX调用您要缓存的页面以外的页面,这将负责cookie。这样,您的主页将被缓存,每次您需要插入一些 cookie 时,您将使用其他页面来执行此操作,该页面除了操作 cookie 外什么都不做。