首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当存在某些cookie时,清漆始终缓存

当存在某些cookie时,清漆始终缓存
EN

Stack Overflow用户
提问于 2013-07-10 22:46:19
回答 1查看 520关注 0票数 0

我希望在我的vcl_recv中有一个规则来检查某个cookie是否存在,如果存在,则始终提供一个缓存文件(让我们称这个cookie为VARNISH_USE_CACHE)。

但是,我还有一个在此之后运行的规则,用于检查会话cookie (如果它存在,则始终传递给apache),如果VARNISH_USE_CACHE不存在,此规则仍应运行。

我不太确定如何检查一个cookie,然后再检查另一个。我尝试将cookie分配给一个temp变量,并在那里进行检查。但我一定不理解vcl是如何工作的,因为当我这样做时,我最终得到的是完整的cookie,没有任何东西被剥离。

下面是我在vcl_rec中的代码:

代码语言:javascript
代码运行次数:0
运行
复制
set req.http.tempCookie = ";" + req.http.Cookie;
set req.http.tempCookie = regsuball(req.http.tempCookie, ";(VARNISH_USE_CACHE)=", "; \1=");
set req.http.tempCookie = regsuball(req.http.tempCookie, ";[^ ][^;]*", "");
set req.http.tempCookie = regsuball(req.http.tempCookie, "^[; ]+|[; ]+$", "");

因此,如果没有VARNISH_USE_CACHE,我期望req.http.tempCookie为空,相反,它始终拥有来自req.http.Cookie的所有cookie。

EN

回答 1

Stack Overflow用户

发布于 2013-07-10 23:05:20

啊,算出来了:

忘记了这一行

代码语言:javascript
代码运行次数:0
运行
复制
set req.http.tempCookie = regsuball(req.http.tempCookie, "; +", ";");

所以代码看起来像这样:

代码语言:javascript
代码运行次数:0
运行
复制
set req.http.tempCookie = ";" + req.http.Cookie;
set req.http.tempCookie = regsuball(req.http.tempCookie, "; +", ";");
set req.http.tempCookie = regsuball(req.http.tempCookie, ";(VARNISH_USE_CACHE)=", "; \1=");
set req.http.tempCookie = regsuball(req.http.tempCookie, ";[^ ][^;]*", "");
set req.http.tempCookie = regsuball(req.http.tempCookie, "^[; ]+|[; ]+$", "");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17573773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档