当前位置:  开发笔记 > 编程语言 > 正文

ASP.NET MVC缓存因控制器操作参数而异

如何解决《ASP.NETMVC缓存因控制器操作参数而异》经验,为你挑选了2个好方法。

有什么办法可以使用outputcache属性通过控制器动作参数来改变缓存?我们有varybyparam,如果我的参数以REST方式嵌入到URL中,则无法使用.



1> Simon_Weaver..:

在Action方法中实现'VaryByParam'并不意味着'通过传递给该动作方法的参数变化'也很重要.它的意思是"根据传递给该动作方法的参数而变化,这些参数起源于HTTP参数".

[OutputCache(CacheProfile = "ContentPage", VaryByParam = "mode")]
public ActionResult Index(string key, string mode)
{

}

让我们说这个行动方法的路线是:

  routes.MapRoute(
   "video-route-short",
   "video/{key}",
   new { controller = "Video", action = "Index", key = (string)null }
  );

正如Craig上面所说,关键参数是URL的一部分,因此缓存不适用于它 - 因此它基本上都是缓存的.

将通过' ?mode=1'类型发送的模式参数将应用于缓存.



2> Craig Stuntz..:

默认情况下,缓存以这种方式工作.不同的URL提供不同的缓存位置.也许您的问题中缺少某些内容,但正如所述,它已经以这种方式运作.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有