加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

ASP.NET MVC输出缓存为多应用程序,因主机名和文化而异

发布时间:2020-12-16 00:48:04 所属栏目:asp.Net 来源:网络整理
导读:我在ASP.NET MVC中有一个多租户应用程序。将被提供的应用程序的实例是主机名的功能(我认为是沿着stackexchange的一行)。 应用程序的每个实例可能具有不同的文化设置(甚至“自动”,以阅读浏览器的语言并尝试使用它),并将相应地进行本地化。 在这种情况下,
我在ASP.NET MVC中有一个多租户应用程序。将被提供的应用程序的实例是主机名的功能(我认为是沿着stackexchange的一行)。

应用程序的每个实例可能具有不同的文化设置(甚至“自动”,以阅读浏览器的语言并尝试使用它),并将相应地进行本地化。

在这种情况下,我想对我的一些行为进行一些输出缓存。所以我的问题是:

>如果输出完全取决于主机名(即忽略本地化要求),那么可以实现多租户ASP.NET MVC应用程序的输出缓存?
>与(1)相同,但现在考虑到输出取决于文化设置?
>与(2)相同,但是考虑到输出可能随传递给操作的参数而变化?

在这种情况下,我正在考虑所有的网站从单个IIS网站运行(以回答评论)。

谢谢。

解决方法

我刚刚知道如何实现这一点。

只需使用VaryByHeader属性,设置为“主机”。有很多可能性这样做。

方法1

使用OutputCacheAttribute传递所有需要的配置元素,包括VaryByHeader:

public class HomeController : Controller
{  
    [OutputCache(Duration = 3600,VaryByParam = "none",VaryByHeader = "host")]
    public ActionResult Index() { /* ... */ }
}

方法2。

或者您可以将其设置为Web.config上的配置文件:

<?xml version="1.0"?>
<configuration>
  <!-- ... -->
  <system.web>
    <!-- ... -->
    <caching>
      <outputCacheSettings>
        <outputCacheProfiles>
          <clear/>
          <add name="Multitenant" 
               enabled="true"
               duration="3600"
               varyByHeader="host"
               varyByParam="none"/>
        </outputCacheProfiles>
      </outputCacheSettings>
    </caching>
  </system.web>
</configuration>

然后使用它:

public class HomeController : Controller
{  
    [OutputCache(CacheProfile = "Multitenant")]
    public ActionResult Index() { /* ... */ }
}

方法3。

或者您可以将OutputCacheAttribute子类化并使用它:

public sealed class MultitenantOutputCacheAttribute : OutputCacheAttribute
{
    public MultitenantOutputCacheAttribute()
    {
        VaryByHeader = "host";
        VaryByParam = "none";
        Duration = 3600;
    }
}

然后使用它:

public class HomeController : Controller
{  
    [MultitenantOutputCache]
    public ActionResult Index() { /* ... */ }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读