2015-10-15 20 views
8

Sto correggendo un bug con ASP.NET OutputCache e mi sta facendo impazzire. Vogliamo il caching sul server, ma non sembra funzionare (è successo qualche tempo fa, in una versione precedente della nostra app, ma abbiamo scoperto il bug per sbaglio di recente).Come verificare ASP.NET MVC OutputCache funziona sul server?

Localmente, non riesco proprio a far funzionare la cache sul lato server. Utilizzando questo attributo:

[OutputCache(CacheProfile = "MyProfile", Location = OutputCacheLocation.Server)] // doesn't work 

Ora, sulla base di un paio di cose che ho letto da googling intorno, ecco forse le informazioni utili:

  • cache di output è attivata in IIS (localhost)
  • I DO utilizzare un AuthorizeAttribute (uno personalizzato con ereditarietà). Ho effettuato il debug in modo specifico, e sono sicuro al 95% che questa non sia la causa.
  • Ho giocato con vari valori, non funziona nulla.
  • Caching fa lavoro lato client.

Ho aperto una sessione perfmon e ha aggiunto alcuni contatori dal gruppo Web Service Cache, Tutto quello che vedo è che ci sono URL memorizzata nella cache del ma la cache è perse:

perfmon graph

Il problema più grande/bug che stiamo affrontando ora è che OutputCache è non funziona a tutti in questo momento. Siamo riusciti a risolverlo specificando VaryByParams="" (una stringa vuota). Lo ha fatto per il cliente. Ma non funziona ancora sul lato server.

Veramente sto verificando se funziona o meno posizionando un punto di interruzione di debug nell'azione che dovrebbe essere memorizzata nella cache. Viene colpito ogni volta, il che significa che la cache non viene colpita.

+0

Avevo un problema simile ed era un problema con i profili di cache. Se non ho usato un profilo di cache e invece ho inserito i valori direttamente nel contructor degli attributi ha funzionato. Hai provato? – heymega

+0

@heymega L'ho provato, e non fa differenza. – MarioDS

+0

@MarioDS: Sto incontrando lo stesso problema. Sei riuscito a risolvere questo? – user1107799

risposta

0

Da http://www.asp.net/mvc/overview/older-versions-1/controllers-and-routing/improving-performance-with-output-caching-cs:

v'è alcuna garanzia che il contenuto verrà memorizzato nella cache per il periodo di tempo specificato. Quando le risorse di memoria diventano basse, la cache inizia a sfrattare automaticamente i contenuti.

Se le risorse di memoria disponibili sul server sono sufficientemente basse durante il test, la cache sfrutta immediatamente i contenuti. Sono sicuro che potrebbe persino rifiutarsi di mettere il contenuto nella cache.

+0

Grazie per aver fornito una ragione, ma non è nel nostro caso. – MarioDS

Problemi correlati