我认为我解决了第一部分,即不应使用
缓存具有查询参数的页面if ( bereq.url ~ "/\?.*$" ){
set beresp.uncacheable = true;
set beresp.ttl = 120s;
return (deliver);
}
但是,当访问带有查询的页面时,该页面不会显示原始页面的缓存版本。
任何建议都值得赞赏。谢谢。
应该在varnish-vcl配置中添加什么才能使其实现?
答案 0 :(得分:0)
对不起,我不确定您需要什么。您的代码实际上是利用清漆的命中方法,但您最好这样做:
return (pass)
与您的版本的细微差别,Varnish创建了一个缓存对象(实际上只是元数据),持续了120秒,以记住它不应该被缓存。但是从一开始就知道您不应该缓存它,您只能在vcl_recv
中sub vcl_recv {
set req.url = reqsub(req.url, "\?.*", "");
}
。
现在,如果要剥离查询字符串,以便所有请求实际上返回主页,则必须执行以下操作:
this.$parent
这找到第一个问号及其所有内容,然后将其替换为空,从而有效地杀死了查询字符串。