asp.net – 多租户应用程序的输出缓存,因主机名和文化而异
|
我在ASP.NET MVC中有一个多租户应用程序。将要提供的应用程序实例仅仅是主机名的功能(我认为这与stackexchange一致)。 应用程序的每个实例可能具有不同的文化设置(甚至“自动”,以阅读浏览器的语言并尝试使用它),并将相应地进行本地化。 在这种情况下,我想对我的一些操作进行一些输出缓存。所以,我的问题是: >如果输出完全取决于主机名(即忽略本地化要求),那么实现多租户ASP.NET MVC应用程序的输出缓存有哪些可能性? 在这种情况下,我考虑所有站点都从一个IIS网站运行。 解决方法我刚刚想出如何实现这一目标。只需使用VaryByHeader属性,设置为“host”即可。这样做有很多种可能性。 方法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() { /* ... */ }
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-core – compilationOptions.emitEntryPoint是什么
- .net – App_LocalResources如何使用MVC?
- asp.net-mvc – 使旧会话Cookie无效 – ASP.Net标识
- asp.net – 什么是LiteralControl?为什么使用
- asp.net – JQGrid不显示数据
- asp.net – 每5秒自动刷新一次Updatepanel
- asp.net – PostbackUrl vs NavigateUrl
- 如何检查ASP.Net中客户端(JavaScript)的Page.Validate()?
- asp.net – 您何时会在Web自定义控件上使用Web用户控件?
- asp.net – Visual Studio开发服务器不更新css和javascript
