Memorizzazione nella cache in asp.net-mvc

Vorrei memorizzare nella cache la maggior parte delle azioni pesanti del database nel mio sito asp.net-mvc. Nella mia ricerca ho trovato

  • caching di ciambella sul blog di Phil
  • Memorizzazione nella cache / compressione dei filtri sul blog di Kazi
  • Il podcast di Scott Hansleman su come memorizzavano le cose in SO.

Ma non sento di averlo ancora capito.
Voglio essere in grado di memorizzare nella cache la mia richiesta POST in base a parecchie pars. Queste pars sono in un object. Quindi vorrei memorizzare nella cache il risultato della seguente richiesta:

public ActionResult AdvancedSearch(SearchBag searchBag) 

Dove searchBag è un object che contiene (un gruppo) di parametri di ricerca facoltativi. I miei punti di vista sono leggeri (come dovrebbero essere), ma l’accesso ai dati può richiedere molto tempo, a seconda di quali campi sono stati inseriti nella ricerca.

Ho la sensazione che dovrei fare il caching sul mio datalayer, piuttosto che sulle mie azioni.
Come dovrei usare VaryByParam nell’attributo OutputCache?