Memcache(d)vs. Varnish用于加速3层Web架构

use*_*219 110 memcached varnish

我正在努力加快我的基准测试(3层Web架构),并且我有一些与Memcache(d)和Varnish相关的一般性问题.

  • 有什么不同?
    在我看来,Varnish是Web服务器的后面,缓存网页,不需要更改代码,只需要配置.
    另一方面,Memcached是通用缓存系统,主要用于缓存数据库的结果,并且需要更改get方法(第一次缓存查找).

  • 我可以同时使用吗?前面的Web服务器和Memcached中的Varnish用于数据库缓存?

  • 什么是更好的选择?

    (方案1 - 主要是写,
    方案2 - 主要是读取,
    方案3 - 读取和写入类似)

Jef*_*and 267

  • Varnish在网络服务器前面; 它可以作为缓存的反向http代理.
  • 你可以使用两者.
  • 大多数写作 - Varnish需要清除受影响的页面.这将导致修改页面的开销和收益很小.
  • 大部分都是阅读 - 清漆可能会涵盖大部分内容.
  • 类似的读写--Varnish将为您提供很多页面,Memcache将为包含已知数据和新数据的页面提供信息,使您可以更快地生成页面.

一个可以应用于stackoverflow.com的示例:添加此注释使页面缓存无效,因此必须从Varnish(以及我的配置文件页面)清除此页面,这可能不值得缓存开始.记住要使所有操作无效受影响的页面可能有点问题).但是,所有注释仍在Memcache中,因此数据库只需编写此注释.数据库无需其他任何操作来生成页面.所有的评论都是由Memcache提取的,页面会被记录下来,直到有人再次影响它(也许是通过投票我的答案).同样,数据库写入投票,所有其他数据都从Memcache中提取,生命很快.

Memcache使您的数据库不会执行大量的读取工作,Varnish通过减少频繁生成页面来保存动态Web服务器免受CPU负载的影响(如果不是Memcache,也可以减轻数据库负载).

  • 这个:"(也许通过投票我的回答)"让我投票给你答案 (3认同)

Joe*_*yde 32

我的经验来自于使用Varnish和Drupal.用尽可能简单的术语,我就是这样回答的:

通常,Varnish适用于未经身份验证的(通过cookie)流量,而memcached将缓存经过身份验证的流量.

所以两者兼用.

  • 你按照我认为Varnish在缓存匿名用户方面做得更好的方式来钉它... (5认同)