我们的网站有一些大的PDF和MP3文件,我们希望将其作为静态文件caching在Varnish中。 目前我们并没有做太多特别的事情 – 只需在vcl_recv删除cookies并set resetp.ttl = 100w; 在vcl_fetch 。
问题似乎是当这些文件之一被请求时(可能是旧的浏览器),并且它不在Varnishcaching中。 当Varnish从后端下载文件时有延迟。 我的理解是,在数据完全加载之前,它不会开始提供给客户端。 这可能需要20秒左右,有时Adobe Acrobat或MP3插件变得困惑。
有没有一种方法可以直接pass内容,同时下载并保存在caching中,以便下一个匹配的客户端请求?
阅读build议: https : //www.varnish-software.com/blog/http-streaming-varnish
用vanilla Varnish 3.0,你可以在vcl_fetch中设置beresp.do_stream为true。 该文件将从后端获取时进行stream式传输。 注意事项:stream媒体对象设置为繁忙,所以其他客户端将被搁置。
还有一个Varnish 3.0.2版本,可以在“完整”stream媒体支持中使用: http : //repo.varnish-cache.org/test/3.0.2+streaming/人们在制作中使用,所以也许你想试试看。
或者,也许你可以“预热”你的文件,在用户开始下载之前将它们放入光油内存caching中?
3.0.2 +stream媒体分支不再是最新的,它只支持Varnish Plus订阅者,没有社区支持。
所以如果你需要stream媒体function,你可以:
Varnish 5.1.2完成你想要的默认configuration。
我尝试了服务器发送的事件,我需要stream首先请求和caching的第二个请求。 它只是工作。