/ / Posso utilizzare il controllo 'OutputCache' di ASP.NET per memorizzare nella cache le immagini senza un impatto sulle prestazioni? - asp.net, outputcache

Posso utilizzare il controllo 'OutputCache' di ASP.NET per memorizzare le immagini nella cache senza un calo di prestazioni? - asp.net, outputcache

Ho alcune azioni ASP.NET MVC che generano immagini in modo dinamico (anche se potrebbe anche essere una pagina ASPX).

Sto usando [OutputCache] per memorizzare queste immagini nella cache. Mi chiedo solo se devo preoccuparmi che ASP.NET memorizzi nella cache immagini in memoria e occupi troppe risorse. Queste sono immagini di prodotti di dimensioni diverse per un carrello contenente solo una dozzina di prodotti.

OutputCache utilizzerà il disco o solo in memoria? Quanto è intelligente? O dovrei semplicemente salvare le immagini sul mio disco e implementare il mio sistema di memorizzazione nella cache (che in realtà è l'implementazione attuale)?

risposte:

3 per risposta № 1

A tutti gli effetti, credo che la cache di output sia completamente in memoria, il che significa che se il pool di app viene riciclato, l'immagine dovrà essere nuovamente generata.

Ho dovuto fare qualcosa di simile in passato, eIn realtà ho implementato un sistema a due livelli che utilizzava principalmente la cache HTTP e utilizzava il filesystem come fallback. Se qualcosa non esisteva, ho generato l'immagine e l'ho salvata sul disco E l'ho messa nella cache. In questo modo se viene espulsa dalla cache o il pool di app ricicla, devo solo caricarlo dal disco (esso sembra che tu abbia fatto lo stesso).

Per quanto riguarda "troppa memoria", se esplicitamenteutilizzare HttpContext.Cache anziché [OutputCache], è possibile controllare la priorità dell'elemento nella cache. È quindi possibile modificare le impostazioni nel pool di app per controllare la quantità di memoria utilizzata in generale, ma non sono sicuro che ci sia molto altro da fare. Un paio di immagini * 12 prodotti non sembrano occuparmi molto della memoria.

Senza sapere nient'altro sul tuoapplicazione, mi sembra che potresti cavartela usando semplicemente outputcache. Tuttavia, se hai bisogno di qualcosa di più robusto e scalabile, utilizzerei il sistema a due livelli che ho descritto. Tuttavia, se "lo hai già implementato e funzionante", "se non si è rotto ..."