我有一台服务器,可以访问数百个文件。这些文件都非常大(有些文件超过 10GB)。这些文件不会更改,而且是只读的,但我需要通过 WAN 提供对它们的访问权限。
我想使用在用户附近运行的反向代理服务器来提高访问速度。例如:
- 用户 X 想要访问服务器 A 上的某些内容。
- 用户 X 访问其 LAN 上的反向代理服务器,导致缓存未命中。文件被下载到此代理服务器。
- 下次用户 X 想要同一个文件时,他不需要去我的主服务器获取它。
我知道这种情况微不足道,但我的流量不会很大,我的问题更多与文件大小本身有关。我读到一些关于 Squid 在缓存大于 2GB 的文件时遇到问题的文章。Varnish 是否面临同样的问题?
感谢您对此的任何想法。
答案1
从技术上来说这是可行的,但是对于您想要实现的目标 - 我考虑只需使用 rsync 定期镜像后端服务器。
其中一个原因是 Varnish 如何从其缓存中传递对象。如果对象不在 Varnish 的缓存中,它将从后端获取。当发生这种情况时,用户必须等待 - 而不会发生任何传输到客户端的情况。
当文件存储在Varnish缓存中时,就可以开始传输给用户了。
根据用户首先如何访问服务器,这可能会导致大量额外的等待。
答案2
Squid 需要 ./configure --with-large-files 来支持大于 2 GB 的对象(应该在 Debian/Ubuntu squid 包上默认启用)。
如果大多数文件经常被大多数客户端访问,请考虑设置 rsync 镜像。