【问题标题】:With Memcached and Squid, is there any need for ASP.NET caching?使用 Memcached 和 Squid,是否需要 ASP.NET 缓存?
【发布时间】:2009-09-27 00:41:35
【问题描述】:

使用 squid,我们可以缓存网页。我不确定它是否提供与 ASP.NET 缓存相同数量的缓存方法(我主要使用 ASP.NET),但它是一个缓存网页的工具。

然后我们有了memcached,它可以缓存数据库表。我相信这是正确的,它就像 SqlCacheDependency(如果我错了,请纠正我)。

但是,在大型 Web 应用程序中是否有任何情况可以找到使用 memcached、squid 和 ASP.NET(或 PHP、JSP - 应用程序框架级)缓存的空间。

谢谢!

【问题讨论】:

    标签: caching


    【解决方案1】:

    您可能会发现缓存整个页面的粒度太粗,缓存数据库表并不能为您带来足够的提升,因此需要大量缓存内容。

    例如,假设您有一个应用程序,该应用程序在每个页面上都显示了登录用户的名称。缓存整个页面并不会真正起作用,因此您需要下拉一个级别并缓存在应用框架内的某个位置。

    【讨论】:

    • 你的例子是一个常见的场景。有一些方法可以绕过整页缓存,同时仍然更改特定的 HTML 片段,称为“甜甜圈缓存”。见stackoverflow.com/questions/3318570/…
    【解决方案2】:

    然后我们有了memcached,它可以缓存数据库表。我相信这是正确的,它就像 SqlCacheDependency(如果我错了,请纠正我)。

    Memcached 是一个分布式哈希表。内置 .NET 缓存的主要优点是您的缓存是可扩展的(您可以根据需要添加任意数量的 memcached boxen)和同步(您的所有 Web 服务器都可以访问相同的内容,并从一个 Web 使数据无效或更新服务器立即传播到所有这些)

    在性能方面,它比 .NET 缓存更差(您正在跨服务器查找对象,而不是在一台机器上进行内存查找)

    但是,在大型 Web 应用程序中是否有任何情况可以找到使用 memcached、squid 和 ASP.NET(或 PHP、JSP - 应用程序框架级)缓存的空间。

    由于上述原因,我可以想象一个 2 级缓存,首先使用 .NET 缓存,然后是 memcached。 (例如,Get() 查看 memcached,将结果存储在 .NET 缓存中设置为在 10 秒后过期,然后在接下来的 10 秒内使用 .NET 缓存进行所有具有相同缓存键的 get 调用,冲洗,重复)

    这样,您可以获得内存缓存查找的性能,而无需纯 memcached 解决方案的网络 IO 成本,同时具有 memcached 的同步和可扩展性优势。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-24
      • 1970-01-01
      • 2015-12-31
      • 2017-06-12
      • 2018-02-10
      • 1970-01-01
      相关资源
      最近更新 更多