这样的问题,我需要通过ajax接收一些有用的数据,但varnish会一直缓存它。所以我需要一些解决方案来阻止清漆缓存ajax。
答案 0 :(得分:4)
Varnish只会在后端服务器要求时缓存内容。如果后端服务器没有发送类似的内容,则默认为缓存120秒。
执行此操作的正确方法是修改后端应用程序以发送Cache-Control: max-age=0
响应标头。
还应该注意的是,即使在拥有大量并发用户的网站上缓存一秒(最大年龄= 1),也会产生良好的效果。
答案 1 :(得分:3)
如果您可以根据URL识别您的AJAX请求,则可以使用以下VCL轻松将所有这些请求通过管道传输到后端:
sub vcl_recv {
if (req.url ~ "(ajax\.php|dynamic\.php)") {
return(pipe);
}
}
这将管理网址包含ajax.php
或dynamic.php
的所有请求。