ASP.NET MVC输出缓存为多应用程序,因主机名和文化而异
发布时间:2020-12-16 00:48:04 所属栏目:asp.Net 来源:网络整理
导读:我在ASP.NET MVC中有一个多租户应用程序。将被提供的应用程序的实例是主机名的功能(我认为是沿着stackexchange的一行)。 应用程序的每个实例可能具有不同的文化设置(甚至“自动”,以阅读浏览器的语言并尝试使用它),并将相应地进行本地化。 在这种情况下,
我在ASP.NET MVC中有一个多租户应用程序。将被提供的应用程序的实例是主机名的功能(我认为是沿着stackexchange的一行)。
应用程序的每个实例可能具有不同的文化设置(甚至“自动”,以阅读浏览器的语言并尝试使用它),并将相应地进行本地化。 在这种情况下,我想对我的一些行为进行一些输出缓存。所以我的问题是: >如果输出完全取决于主机名(即忽略本地化要求),那么可以实现多租户ASP.NET MVC应用程序的输出缓存? 在这种情况下,我正在考虑所有的网站从单个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() { /* ... */ } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net – linq to sql update standard
- asp.net-mvc – Asp.net MVC控制器Action字符串参
- asp.net-mvc-4 – 如何通过Elastic Beanstalk手动
- asp.net-mvc – 有一种方法我可以在ASP中调试路由
- asp.net-mvc – MVC3 – 将字节数组发布到控制器
- ASP.NET C#OutofMemoryException大文件上载
- asp.net-mvc – 如何在IIS 5.1上部署MVC App?
- 创建可扩展的ASP.Net MVC网站,而无需使用Session
- 在ASP.NET Web窗体中收集输入值的推荐方法是什么
- asp.net – 如何修复“System.Security.Permissi
热点阅读