【问题标题】:How to invalidate the OutputCache in a webfarm?如何使 webfarm 中的 OutputCache 无效?
【发布时间】:2010-05-03 02:24:37
【问题描述】:

我有一个使用OutputCache 属性来缓存页面的网站。效果很好。

现在,我正在研发扩大这个网站以使其成为一个网络农场。除了 webfarm 痛苦的常见嫌疑人......我已经注意到(很快/很明显)来自 Server_A 的 OutputCache 不会使来自 Server_B 的 OutputCache 无效 .. 如果尝试使单个服务器的 OutputCache 无效。这完全有道理 -> S_A 如何“告诉” S_B 当它们在物理上是 2 台单独的机器等时失效?

那么 - 我们有哪些选择?

速度?我知道这会将缓存移动到不同的层..这意味着始终需要确定最终结果(输出)..而不是记住最终输出内容的 OutputCache(是的,varby 提供不同的版本,等等..这完全没问题)。因此,即使 poco 或业务对象都已同步,仍然需要最后的渲染工作(即使它很小……与生成/同步业务对象的工作相比)。

所以是的 .. 不确定这里的选项以及其他人会做什么?

【问题讨论】:

    标签: asp.net caching outputcache appfabric


    【解决方案1】:

    正如您在上面所说,开箱即用的 ASP.NET 输出缓存在每台服务器上工作。然而,在 ASP.NET 4.0 中,整个缓存基础结构都是可插拔的。 ScottGu 有一个blogpost 来利用它进行输出缓存。我编写了一些使用 Velocity/AppFabric 作为缓存引擎的演示代码,应该做你想做的事 - 看看我的博客 here

    【讨论】:

      【解决方案2】:

      看看memcached

      什么是 Memcached?
      免费和开源,高性能, 分布式内存对象缓存系统,本质上是通用的,但是 旨在用于通过以下方式加速动态 Web 应用程序 减轻数据库负载。

      来自wikipedia

      该系统被几个非常大的知名网站使用,包括 YouTube[2]、LiveJournal、Wikipedia/Wikimedia、Amazon.com、Wikia、 SourceForge、Metacafe、Facebook[3] [4]、Twitter[5]、Fotolog、The 海盗湾[6] 和 Netlog.[7]

      .NET 客户端here

      不幸的是,它不适用于 Windows。它可以安装,但最好的集成是与 linux。

      【讨论】:

      • MemcacheD 就像 Velocity。我知道原因是我不久前为将它移植到 .NET x64 做出了贡献。所以不幸的是,这不是我现在正在寻找的......但如果这是人们正在使用的......那么我确实有一个答案。
      • 考虑到 Velocity 是非常非常新的东西。从 1.0 版开始就足够好的微软产品并不常见 :-)
      • 是的 - 我并不是说我想使用 Velocity 等。
      猜你喜欢
      • 2013-04-18
      • 2011-01-15
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      相关资源
      最近更新 更多