【问题标题】:Why to use memcached if Varnish is present如果 Varnish 存在,为什么要使用 memcached
【发布时间】:2017-06-11 18:52:15
【问题描述】:

我正在尝试构建一个 webapp(包含大量动态内容),我需要一些缓存系统来提高性能。目前我正在使用带有负载均衡器的 nginx。

我将 varnish 视为 http 代理,用于直接从缓存中响应并避免向 nginx 发送请求。

稍后我会查看 memcached,这是一个很好的键值对缓存在 RAM 中。

现在,如果我可以使用 varnish 缓存我的所有请求并为频繁更改的动态内容设置一点 TTL,那么为什么我需要一个系统作为 memcached 之类的呢?

我应该只对静态内容使用 varnish 并使用 memcached 管理动态内容吗?

对所有请求都使用清漆会是一种不好的做法,并且会成为清除系统(对于动态内容)一项繁重的任务?

我有点困惑...谢谢

【问题讨论】:

    标签: caching nginx memcached varnish


    【解决方案1】:

    Varnish + Memcached 是一个非常有意义的组合。

    通常,网络应用程序具有访客和登录区域:

    Varnish 通过缓存访客区域来帮助完全绕过 PHP 引擎执行,允许您在那里设置高 TTL。 示例:向来宾用户显示的文章内容。

    Memcached 是为了帮助减轻 PHP 引擎的负担 Varnish 缓存不满足请求时,即对于登录用户。 存储在那里的常见内容包括繁重的 SQL 查询的结果和其他临时数据,每次 PHP 运行时重新生成这些数据的成本很高。

    【讨论】:

    • 我正在使用 java,但我认为您所说的对所有语言都是等效的。所以我不应该在 Varnish 中缓存“userLoggedContent”,而应该只缓存不依赖于登录用户的内容。所有其他依赖于用户的内容都可以通过 MemCached 进行缓存。我是对的?
    • 基本上,是的。你应该明白那是默认的 Varnish 行为。它不会缓存带有 cookie(已登录)的请求。当然,您可能希望使用 Varnish 尽可能多地缓存,甚至是登录用户的部分页面,例如侧边栏输出(需要启用 ESI)。
    猜你喜欢
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 2015-01-20
    相关资源
    最近更新 更多