Memcache(d) vs. Varnish for speeding up 3 tier web architecture

我试图加快我的基准测试(3层 Web 架构) ,我有一些与 Memcache (d)和 Varnish 相关的一般性问题。

  • 有什么区别吗?
    在我看来,清漆是后面的网络服务器,缓存网页,并不需要改变的代码,只是配置。
    另一方面,Memcached是通用的缓存系统,主要用于从数据库缓存结果,并且需要改变 get方法(第一次缓存查找)。

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

  • 什么是更好的选择?

    (场景1-主要写,
    场景2-大部分内容为:
    情况3-读和写是相似的)

43942 次浏览
  • Varnish 位于 webserver 之前; 它作为一个反向 http 代理缓存。
  • 你可以两个都用。
  • 主要是写——清漆需要清除受影响的页面。这将导致开销,并且对修改后的页面没有什么好处。
  • 大部分是阅读,清漆可能会覆盖大部分内容。
  • 类似的读写—— Varnish 会为你提供很多页面,Memcache 会为已知和新数据混合的页面提供信息,让你更快地生成页面。

An example that could apply to stackoverflow.com: adding this comment invalidated the page cache, so this page would have to be cleared from Varnish (and also my profile page, which probably isn't worth caching to begin with. Remembering to invalidate all affected pages may be a bit of an issue). All the comments, however, are still in Memcache, so the database only has to write this comment. Nothing else needs to be done by the database to generate the page. All the comments are pulled by Memcache, and the page is recached until somebody affects it again (perhaps by voting my answer up). Again, the database writes the vote, all other data is pulled from Memcache, and life is fast.

Memcache 节省了你的数据库从做很多读工作,Varnish 节省了你的动态网络服务器从 CPU 负载,使你生成页面更少的频率(并减轻了数据库负载一点点,如果没有 Memcache)。

我的经验来自于对 Drupal 使用 Varnish:

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

那就两个都用。