用PHP下载文件,通过varnish直接在输出缓冲区上生成它们


download file with PHP through varnish generating them directly on the output buffer

场景如下:下载一个直接在php://output上生成的文件,写入其中。

没有varnish的行为是文件被正确下载,而服务器写入缓冲区。

使用varnish,客户端等待整个文件生成,然后下载文件。

是否有一个特定的配置来完成varnish的启动,立即下载文件,而不是等待完整的生成文件?

我已经尝试通过URL (Varnish规则跳过缓存机制),其中文件生成,但写入缓冲区它没有意义,不是吗?

编辑

php://output上打开一个文件流,并写入该流
$out = fopen( 'php://output', 'w' );
fputcsv( $out, $whatever ); // or fwrite

我在清漆配置中找到了解决方案:不缓存特定的url(和http动词)就足够了像这样:

if ((req.url ~ "/url") && (req.url == "POST")) {
  return(pipe);
}