如何防止Varnish缓存ajax?

时间:2013-03-18 14:18:24

标签: ajax caching varnish

这样的问题,我需要通过ajax接收一些有用的数据,但varnish会一直缓存它。所以我需要一些解决方案来阻止清漆缓存ajax。

2 个答案:

答案 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.phpdynamic.php的所有请求。