ASP.NET MVC Caching vary by controller action parameter

隐身守侯 提交于 2019-12-11 03:05:56

问题


Is there any way I can vary caching by a controller action parameter using the outputcache attribute? We have varybyparam which will not work if my parameters are embedded within the URL in a REST manner.


回答1:


Caching works this way by default. Different URLs give different cache locations. Perhaps there is something missing from your question, but, as stated, it already works this way.




回答2:


Its also important to realize in a Action method that 'VaryByParam' does not mean 'Vary by the parameters being passed into that action method'. it means 'vary by the parameters being passed into that action method that originate as HTTP parameters'.

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

}

Lets say the route for this action method is :

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

As Craig says above, the key parameter is part of the URL and therefore caching doesn't apply to it - so it is essentially always cached.

The mode parameter which would be sent via a '?mode=1' type would apply to the caching.



来源:https://stackoverflow.com/questions/361301/asp-net-mvc-caching-vary-by-controller-action-parameter

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!