Se la tua applicazione ASP.NET ha solo pochi utenti, probabilmente non ti interessa quanto sia veloce o lenta e probabilmente ti sta dando comunque prestazioni abbastanza buone. Tuttavia, quando si aggiunge più carico all'applicazione ASP.NET, è molto probabile che le prestazioni di ASP.NET diminuiscano in modo significativo. Potrebbe anche fermarsi se viene caricato abbastanza. E, ironia della sorte, tutto ciò accade proprio quando la tua azienda vede più attività, quindi l'impatto è ancora maggiore.
Oggi ASP.NET è diventato molto popolare per le app ad alto traffico ed è ora comune vedere 10-20 server farm con bilanciamento del carico e in alcuni casi anche 50-100 server farm. Quindi, in queste situazioni, le prestazioni di ASP.NET sono un problema ancora più delicato da risolvere.
NCache Dettagli NCache Docs Documenti di memorizzazione nella cache di ASP.NET
utilizzando NCache come cache distribuita
Il motivo principale per cui le prestazioni di ASP.NET diminuiscono quando si aumenta il carico su di esso è il database che non è in grado di gestire carichi maggiori come può fare la Web farm dell'applicazione ASP.NET. Questo perché puoi aggiungere più server alla web farm ASP.NET ma non puoi fare lo stesso con il tuo database.
Quindi, in queste situazioni, la soluzione migliore è usare a cache distribuita piace NCache. NCache è in memoria, quindi è molto più veloce del database. E, NCache crea un cluster di server cache e puoi far crescere il cluster in modo lineare proprio come la web farm. Di conseguenza, con NCache, le prestazioni di ASP.NET rimangono ottime anche in presenza di carichi di transazione estremi. Puoi usare NCache nei seguenti due modi:
Archiviazione dello stato della sessione ASP.NET
È possibile configurare la propria applicazione ASP.NET su archivia lo stato della sessione ASP.NET in NCache invece di InProc, State Server o SQL Server. Si prega di notare che qui non è necessaria alcuna programmazione. Si modifica solo il codice web.config come segue:
1 2 3 4 5 6 |
<sessionstate cookieless="false" regenerateexpiredsessionid="true" mode="Custom" customprovider="NCacheSessionProvider" timeout="20"> <providers> <add name="NCacheSessionProvider" type="Alachisoft.NCache.Web.SessionState.NSessionStoreProvider" exceptionsenabled="true" enablesessionlocking="true" emptysessionwhenlocked="false" sessionlockingretry="-1" sessionappid="NCacheTest" useinproc="false" enablelogs="false" cachename="myReplicatedCache" writeexceptionstoeventlog="false" asyncsession="false"> <providers> <sessionstate></sessionstate></providers></add></providers></sessionstate> |
Cache dei dati dell'applicazione ASP.NET
L'altro modo è per te cache dei dati dell'applicazione in una cache distribuita come NCache quindi la prossima volta che la tua applicazione ASP.NET avrà bisogno di questi dati, li troverà nella cache. Ecco un piccolo esempio di codice su come memorizzare nella cache i dati dell'applicazione:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
using Alachisoft.NCache.Web.Caching; ... Cache cache = NCache.InitializeCache("myCache"); // Create a key to lookup in the cache // The key for will be like “Employees:PK:1000” string key = "Employee:EmployeeId:" + emp.EmployeeId.ToString(); Employee employee = (Employee)Cache[key]; if (employee == null) { // item not found in the cache. load from db LoadEmployeeFromDb(employee); // Now, add it to the cache for future reference Cache.Insert(key, employee, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.Default, null ); } |
Più dati si memorizzano nella cache, meno è necessario accedere al database e più veloci sono le prestazioni dell'applicazione ASP.NET.