Wybór dostawcy niestandardowej pamięci podręcznej dla określonych akcji kontrolera

Usiłuję zaimplementować MongoDB / Memory połączony dostawca pamięci podręcznej wyjścia do użycia z MVC4. Oto moja początkowa implementacja:

public class CustomOutputCacheProvider : OutputCacheProvider
{
    public override object Get(string key)
    {
        FileLogger.Log(key);
        return null;
    }

    public override object Add(string key, object entry, DateTime utcExpiry)
    {
        return entry;
    }

    public override void Set(string key, object entry, DateTime utcExpiry)
    {
    }

    public override void Remove(string key)
    {
    }
}

A mój wpis konfiguracji internetowej:

<caching>
  <outputCache defaultProvider="CustomOutputCacheProvider">
    <providers>
      <add name="CustomOutputCacheProvider" type="MyApp.Base.Mvc.CustomOutputCacheProvider" />
    </providers>
  </outputCache>
</caching>

A użycie w HomeController:

[OutputCache(Duration = 15)]
public ActionResult Index()
{
    return Content("Home Page");
}

Mój problem polega na tym, że gdy sprawdzam plik dziennika dla żądanych kluczy, widzę nie tylko żądanie do kontrolera domowego, ale także wszystkie inne ścieżki:

a2/  <-- should only log this entry
a2/test
a2/images/test/50115c53/1f37e409/4c7ab27d/50115c531f37e4094c7ab27d.jpg
a2/scripts/jquery-1.7.2.min.js

Zdałem sobie sprawę, że nie powinienem ustawiać CustomOutputCacheProvider jako defaultProvider w Web.Config, nie mogłem jednak określić, jak określić dostawcę pamięci podręcznej, którego chcę użyć do konkretnej akcji kontrolera.

Dzięki stronom internetowym Asp.Net możesz to zrobić za pomocą<%@ OutputCache Duration="60" VaryByParam="None" providerName="DiskCache" %> na górze strony, ale dla MVC jedynym rozwiązaniem, jakie mogłem znaleźć, jest zastąpienieMetoda HttpApplication.GetOutputCacheProviderName w Global.asax.

Czy istnieje bardziej elegancki sposób osiągnięcia tego celu przy użyciu atrybutu [OutputCache]?

questionAnswers(3)

yourAnswerToTheQuestion