mvc cache c# asp.net-mvc caching asp.net-mvc-3

c# - outputcache mvc 5



Caché de páginas parciales y VaryByParam en ASP.NET MVC 3 (1)

Creo que lo descubrí. Parece que el problema es que VaryByParam, cuando el parámetro de entrada es un objeto, utiliza ToString() en ese objeto para determinar su singularidad. Así que esto deja dos opciones:

  1. ToString() para proporcionar un identificador único.
  2. Pasando un identificador único como un parámetro adicional:

    <% Html.RenderAction("RenderContent", Model, Model.Id); %> [Authorize] [OutputCache(Duration = 6000, VaryByParam = "id", VaryByCustom = "browser")] public ActionResult RenderContent(Content content, string id) { return PartialView(content); }

Estoy intentando usar el nuevo almacenamiento en caché de página parcial disponible en ASP.NET MVC 3. En mi opinión, estoy usando:

<% Html.RenderAction("RenderContent", Model); %>

Que llama al método del controlador:

[Authorize] [OutputCache(Duration = 6000, VaryByParam = "*", VaryByCustom = "browser")] public ActionResult RenderContent(Content content) { return PartialView(content); }

Tenga en cuenta que tanto la vista original como la vista parcial utilizan el mismo modelo de vista.

El problema es que VaryByParam no funciona: RenderContent() siempre devuelve el mismo HTML almacenado en caché sin importar qué modelo de vista se le pase. ¿Hay algo sobre VaryByParam que no entiendo?