通过清漆直接在输出缓冲区上生成带有 PHP 的下载文件

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

场景是: 下载直接生成的文件到 php://output 写入。

没有清漆的行为是在服务器写入缓冲区时正确下载文件。

对于 varnish,客户端会等待整个文件生成,然后下载文件。

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

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

编辑

从 PHP 的角度来看,它在 php://output 上打开一个文件流并写入该流

$out = fopen( 'php://output', 'w' );
fputcsv( $out, $whatever ); // or fwrite

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

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