Ho una query sql (stored proc) che richiede circa 8-10 secondi prima che i risultati vengano visualizzati in una webgrid. Qual è la migliore pratica per le prestazioni riguardanti il caricamento in cache in asp.net-mvc3 in modo che l'utente non debba prendere quel colpo 8-10 sec ogni volta per caricare i dati (meno ottimizzando la query)?Tecniche di memorizzazione dati nella cache MVC3
risposta
È possibile utilizzare la classe MemoryCache per archiviare il risultato di questa query sotto una certa chiave. La chiave potrebbe essere l'hash dei criteri di query (se si dispone di tale). E qui ci sono some guides su MSDN su come usarlo.
Quando si implementa la memorizzazione nella cache, tenere presente che questa cache è memorizzata in memoria per impostazione predefinita. Ciò significa che se si esegue questa applicazione in una Web farm potrebbe essere più interessante utilizzare una cache distribuita in modo che tutti i nodi della farm condividano gli stessi dati memorizzati nella cache. Questo potrebbe essere fatto estendendo la classe ObjectCache con alcune soluzioni di caching distribuito. Ad esempio memcached è popolare e ha .NET provider. Un'altra soluzione di caching distribuita è AppFabric.
Sta memorizzando nella cache questa azione.
[OutputCache(Duration = 300)]
public ActionResult Action(){
//some operation
return View()
}
Questo memorizzerà l'intera azione (ad esempio l'azione non verrà nemmeno eseguita), quindi anche se i dati cambiano, non verranno eseguiti per i successivi 5 minuti. A volte può aiutare, ma quando accedo ai dati preferisco non usarlo – BigMike
Quanto spesso cambiano i dati di copertura di questa stored procedure? Se relativamente di rado, è possibile utilizzare caratteristica molto buona - SqlCacheDependency
http://msdn.microsoft.com/en-us/library/ms178604.aspx
questo modo il vostro SP pesante verrà chiamato solo quando necessario, e il risultato verrà memorizzata nella cache più a lungo possibile.
Thx per la risposta, che probabilmente dovrà essere aggiornato ogni 3-4 ore, tuttavia ho ricevuto SqlCachDep endecy funziona così grazie ma probabilmente dovrò aggiornarlo più frequentemente. – JaJ
- 1. Memorizzazione nella cache dei dati JSON in C# MVC3
- 2. Dati di memorizzazione nella cache in PHP
- 3. Memorizzazione nella cache dei dati nei graal
- 4. Soluzioni di memorizzazione nella cache
- 5. Dati di memorizzazione nella cache in ASP.NET MVC 3
- 6. Archiviazione e memorizzazione nella cache di Azure
- 7. Memorizzazione nella cache di bulloni di tempesta
- 8. Pattern deposito - Memorizzazione nella cache
- 9. Memorizzazione nella cache di una matrice PHP
- 10. Efficace memorizzazione nella cache dei dati caricati su Android
- 11. Evita la memorizzazione nella cache di IE
- 12. Soluzioni di memorizzazione nella cache e query
- 13. Memorizzazione nella cache di un'immagine e UICollectionView
- 14. Memorizzazione nella cache di volley e bitmap
- 15. Memorizzazione nella cache di autenticazione mercuriale?
- 16. Best practice di memorizzazione nella cache
- 17. esempi di memorizzazione offline e memorizzazione nella cache decenti html5
- 18. NetBIOS esegue la memorizzazione nella cache?
- 19. collezioni memorizzazione nella cache in backbone.js?
- 20. Disabilitare la memorizzazione nella cache nel pallone
- 21. Differenze tra componenti di memorizzazione nella cache nella configurazione Web
- 22. Restkit, disabilita la memorizzazione nella cache
- 23. Implementazione della memorizzazione nella cache coclea blu
- 24. Memorizzazione nella cache delle immagini in Memcached
- 25. crossdomain.xml impedisce la memorizzazione nella cache
- 26. Come implementare la memorizzazione nella cache di ListView in Android
- 27. Come disabilitare la memorizzazione nella cache di SQLAlchemy?
- 28. Perché utilizzare l'addetto all'assistenza per la memorizzazione nella cache quando la cache del browser gestisce la memorizzazione nella cache?
- 29. Richieste di rete RxJava e memorizzazione nella cache
- 30. Memorizzazione dei dati nella memoria
MemoryCache è probabilmente la soluzione giusta, ma ho alcuni scenari in cui gli oggetti vengono automaticamente sfrattati dalla cache (con un MVC 3). Qual è il tuo consiglio in merito? Sono necessarie configurazioni particolari per farlo funzionare con MVC? Oh bene, se vuoi fare un tentativo, puoi leggere http://stackoverflow.com/questions/7849000/memorycache-empty-just-after-adding-an-object? Sto ancora combattendo con questo problema e non riesco a capire dove sto fallendo. :(Grazie – BigMike
@BigMike, è possibile specificare una politica di scadenza quando si memorizzano oggetti nella cache.È possibile definire la scadenza assoluta, la scadenza scorrevole, cambiare i monitor, ... È molto flessibile –
sì, posso, ho provato con espirazione scorrevole e scadenza del tempo assoluto, in alcuni scenari ho sfrattato tutto per apparentemente senza motivo, la cosa divertente è che nella mia chiamata rimossa ho una Reason of CacheSpecificEviction ma non riesco a trovare chi sta effettivamente sfrattando – BigMike