43

我们需要一个用于静态图像的 Web 内容加速器,以位于我们的 Apache Web 前端服务器前面

我们之前的托管合作伙伴使用 Tux 取得了巨大成功,我喜欢它是我们正在使用的 Red Hat Linux 的一部分,但它的最后一次更新是在 2006 年,未来发展的机会似乎很小。我们的 ISP 建议我们在反向缓存代理角色中使用 Squid。

Tux 和 Squid 之间有什么想法吗?对我们来说,兼容性、可靠性和未来支持与性能一样重要。

另外,我在这里阅读了有关 Varnish 的其他线程;与在高流量环境中获得的 Squid 和/或 Tux 相比,有人对 Varnish 有任何实际经验吗?

干杯

伊恩

更新:我们现在正在测试 Squid。使用 ab 以 100 次并发拉取同一图像 10,000 次,Apache 本身和 Squid/Apache 都非常迅速地处理请求。但是 Squid 只向 Apache 发出了一次图像请求,然后从 RAM 中为它们提供服务,而仅 Apache 就必须派生大量工作人员才能为图像提供服务。看起来 Squid 可以很好地释放 Apache 工作人员来处理动态页面。

4

11 回答 11

38

根据我的经验,varnish 比 squid 快得多,但同样重要的是,它不像 squid 那样是黑匣子。Varnish 使您可以访问非常详细的日志,这些日志在调试问题时很有用。它的配置语言也比 squid 的更简单、更强大。

于 2009-04-27T16:01:35.733 回答
17

@Daniel,@MKUltra,详细说明 Varnish 假定的 cookie 问题,实际上并没有。如果请求返回一个 cookie,则不缓存请求是完全正常的。Cookie 主要用于区分不同的用户偏好,所以我不认为人们会想要缓存这些(特别是如果它们包含一些秘密信息,如会话 ID 或密码!)。

如果您的服务器使用您的 .js 和图像发送 cookie,那是您后端的问题,而不是 Varnish 的问题。正如@Daniel(提供的链接)所引用的,由于 Varnish 中集成了非常酷的语言/DSL,您无论如何都可以强制缓存这些文件...

于 2010-02-15T10:46:42.100 回答
12

如果您希望推送大量静态图片,您可能需要先了解一些基础知识。

您的应用程序应确保传递所有正确的标头,例如 Cache-Control 和 Expires。这应该会导致客户端浏览器在本地缓存这些图像并减少您的请求计数。

使用 CDN(如果它在您的预算范围内),这会使图像更接近您的客户(通常),并为他们带来更好的用户体验。要使 CDN 成为一项富有成效的投资,您将再次需要确保正确设置所有必要的缓存标头,正如我在上一段中所说的那样。

毕竟,如果您仍然要使用反向代理,我建议在代理模式下使用 nginx,而不是 Varnish 和 squid。是的,Varnish 很快,和 nginx 一样快,但是你想做的事情真的很简单,当你想做复杂的缓存和 ESI 时,Varnish 就会出现。所以保持简单,愚蠢。nginx 确实会很好地完成你的工作。

我没有使用 Tux 的经验,所以我无法对此发表评论。

于 2010-09-20T00:56:12.957 回答
6

值得一提的是,我最近在一个 6 年历史的低功耗网络服务器(运行 Fedora Core 2)上将 nginx 设置为 Apache 前面的反向代理,该服务器受到轻度 DDoS 攻击(10K req/sec)。页面加载速度很快(<100 毫秒),系统负载保持在 20% 左右的低 CPU 利用率,并且内存消耗非常少。袭击持续了 1 周,游客没有看到任何不良影响。

持续每分钟超过 50 万次点击还不错。请务必登录到 /dev/null。

于 2010-02-27T07:26:32.100 回答
6

有趣的是,没有人提到 Apache Traffic Server(以前的 Yahoo! Traffic Server)http://trafficserver.apache.org/

请看看它,它的工作很漂亮。

于 2014-01-25T22:31:04.347 回答
4

我们在http://www.mangahigh.com上使用 Varnish,并且已经能够从大约 100 个并发的 pre-varnish 扩展到超过 560 个并发的 post-varnish(此时服务器负载保持在 0,因此还有很大的增长空间!)。varnish 的文档可能会更好,但是一旦你习惯了它就会非常灵活。

Varnish 意味着比 Squid 快很多(从未使用过 Squid,我不能肯定地说)- http://users.linpro.no/ingvar/varnish/stats-2009-05-19显示 Twitter, Wikia、Hulu、perezhilton.com 和许多其他大牌也在使用它。

于 2009-12-03T11:24:02.817 回答
3

Squid 和 nginx 都是专门为此设计的。nginx 对于服务器场特别容易配置,也可以作为 FastCGI 的前端。

于 2008-11-14T14:34:08.843 回答
3

我只用过鱿鱼,无法比较。我们使用 squid 在美国的服务器上缓存整个站点(所有数据都从德国的机器中提取)。它很容易设置并且运行良好。我发现文档有点缺乏,除非您已经知道要查找的内容。

于 2008-11-14T15:02:16.553 回答
2

由于您已经有 apache 提供静态和动态内容,我建议您使用 Varnish。

通过这种方式,您可以使用 apache 传递静态内容并使用 varnish 为您缓存它。Varnish 非常灵活,为您提供缓存和负载平衡功能,以最佳方式发展您的网站。

于 2012-02-03T12:08:53.030 回答
1

我们即将在 IIS 6 安装前推出 varnish 2.01 服务器。我们唯一需要注意的是我们的 SSL(因为 varnish 无法处理 SSL)。所以我们还安装了 Nginx 来处理这些请求。

在我们所有的测试中,我们都显示网站可以处理的流量增加了 66%。

我唯一的抱怨是 varnish 不能很好地处理 cookie,并且文档仍然有点分散。

于 2008-11-23T02:21:00.130 回答
1

没有人提到 Squid 完全遵循HTTP 规范(或者至少他们尝试这样做),而 Varnish 没有。在我看来,这意味着 Varnish 更适合缓存单个站点的内容(通过广泛调整 Varnish),而 Squid 更适合缓存许多站点的内容(每个站点都必须根据规范使其内容“可缓存” )。

于 2013-09-05T19:14:13.030 回答