大佬教程收集整理的这篇文章主要介绍了ASP.NET MVC输出缓存为多应用程序,因主机名和文化而异,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
应用程序的每个实例可能具有不同的文化设置(甚至“自动”,以阅读浏览器的语言并尝试使用它),并将相应地进行本地化。
在这种情况下,我想对我的一些行为进行一些输出缓存。所以我的问题是:
>如果输出完全取决于主机名(即忽略本地化要求),那么可以实现多租户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> <outputCacheSet@R_197_11520@gs> <outputCacheProfiles> <clear/> <add name="Multitenant" enabled="true" duration="3600" varyByHeader="host" varyByParam="none"/> </outputCacheProfiles> </outputCacheSet@R_197_11520@gs> </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 MVC输出缓存为多应用程序,因主机名和文化而异全部内容,希望文章能够帮你解决ASP.NET MVC输出缓存为多应用程序,因主机名和文化而异所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。