【问题标题】:IIS output cache - how to add a resource to cache, whatever the pathIIS 输出缓存 - 无论路径如何,如何将资源添加到缓存
【发布时间】:2013-09-16 23:34:46
【问题描述】:

我有一个在 IIS 7.5

上运行的多租户 .Net MVC4 应用程序

我希望 IIS 在其输出缓存中进行缓存,这是每个租户、每个控制器都应该可以访问的公共资源。

例如:

/MyTenant1/MyController/MyAction1/Help
/MyTenant1/MyController/MyAction2/帮助
/MyTenant2/MyController/MyAction1/帮助
[...]

所有这些帮助都完全相同。 我希望 IIS 将 Help.aspx 缓存为单个资源,并为任何租户、任何控制器、任何操作提供它...

提前感谢您的帮助!

【问题讨论】:

  • 这些租户是在同一个 IIS 网站/应用程序下还是每个租户都有自己的网站/应用程序?

标签: c# .net asp.net-mvc-4 caching iis


【解决方案1】:

我认为之前的答案不会得到想要的结果(抱歉,由于分数低,无法发表评论)。 OP在这里可以不同意我的观点,但只是我的想法......

缓存键由完整路径组成,在 OP 的情况下将包含:

/MyTenant1/MyController/MyAction1/Help /MyTenant2/MyController/MyAction1/Help

因此将是独一无二的,因此最终会出现相同内容的多个副本。

您可以编写一个自定义缓存提供程序并提出一个密钥转换逻辑来将这些不同的密钥映射到公共密钥(通过忽略租赁位?)请参阅MSDN 了解这一点。这是一种解决方案。

其他不那么优雅的解决方案(恕我直言)可能是制作单个页面(无租户)并使用服务器重写规则从其他租户映射到它。

【讨论】:

  • 是的!我认为你是对的 @i.net - 让我检查一下,我会回复你。
  • 确实,它可以与自定义 OuputCacheProvider 一起正常工作。这是一个实现,它激发了我最终让我的公共“/Help”页面被缓存,无论租户路径是:Output Cache Provider。这是 Scott Gu Extensible Output Caching 的一篇文章,感谢您的帮助。
【解决方案2】:

你可以为每个动作使用 OutputCache 属性

[OutputCache(Duration=600)]
public ActionResult MyAction1

或者你可以设置一个CacheProfile

[OutputCache(CacheProfile = "Cache1Hour")]
public ActionResult MyAction1 ...

并将其定义为 WebConfig

<system.web>
    <caching>
      <outputCacheSettings>
          <outputCacheProfiles>
              <add name="Cache1Hour" duration="3600"/>
          </outputCacheProfiles>
      </outputCacheSettings>
    </caching>
</system.web>

此外,您可以定义缓存的位置:

您可以将 Location 属性设置为以下任一值:

· 任意

· 客户

· 下游

· 服务器

· 无

· 服务器和客户端

示例教程:

http://www.asp.net/mvc/tutorials/older-versions/controllers-and-routing/improving-performance-with-output-caching-cs

【讨论】:

  • 感谢您的这些提示。但是,在我的例子中,这些解决方案让 IIS 保留与控制器、操作和租户一样多的“/Help”缓存版本。默认情况下,IIS 会根据请求的路径改变缓存。因此,我如何告诉 IIS 为两个不同的路径保留相同版本的“/Help”? /MyTenant1/MyController/MyAction1/Help /MyTenant2/MyController/MyAction1/Help
  • @JaffarMoore 好的!现在我们有了 i.net 提供的解决方案 :)
猜你喜欢
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-04
  • 2017-09-26
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
相关资源
最近更新 更多