通过清漆直接在输出缓冲区上生成带有 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);
}
场景是:
下载直接生成的文件到 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);
}