2010-11-10 16 views
7

Abbiamo un'applicazione Web che memorizza tutti i dati del sito in HttpRuntime.Cache.È possibile condividere HttpRuntime.Cache tra più server Web?

Ora è necessario distribuire l'applicazione su 2 server Web con carico bilanciato.

In questo caso, ogni server Web avrà una propria cache, il che non è l'ideale perché se un utente richiede dati da webserver1 verrà memorizzato nella cache, ma la prossima richiesta potrebbe andare a webserver2, e i dati che il loro precedente richiesta in cache non sarà disponibile.

È possibile utilizzare un provider di cache condivisa per condividere lo HttpRuntime.Cache tra i due server Web o per replicare la cache tra di essi, in modo che la stessa cache sia disponibile su entrambi i server Web? In tal caso, cosa posso fare per risolvere questo problema?

risposta

6

No, non è possibile condividere la cache ASP.NET integrata, ma è possibile utilizzare qualcosa come memcached o AppFabric.

0

Non andare lì. Normalmente, la cache essendo un oggetto statico, vive solo nell'AppDomain. L'aggiornamento manuale di questi è un mondo di dolore e fortemente sconsigliato.

È possibile utilizzare un numero di soluzioni di memorizzazione nella cache che si trovano di fronte al server per questo tipo di scopo.

0

Dalla tua domanda sembra che tu abbia dati utente nella cache? In tal caso sarei con Aliostad e dire non andarci!

HttpRuntime di cache deve essere utilizzato per gli oggetti statici, ma regolarmente utilizzati che provengono dal database, lo scopo principale dovrebbe essere impedisce colpi di database che altrimenti si verificherebbero su ogni richiesta indipendentemente utente ... quindi le cose come le opzioni in un combobox o configurazione certian impostazioni

Se veramente bisogno di cache per i dati utente, poi come sopra Memcached, AppFabric o NVelocity

ci sono strati di caching adatti per le diverse esigenze, avendo solo 2 server web suggerisce che tu non ancora richiedono i framework di caching distribuiti sopra.

Qual è il carico del server e qual è il fattore limitante, CPU, RAM, Network Bandwith? Sul tuo DB o sui tuoi server web? Ognuno di questi indica una diversa strategia di memorizzazione nella cache.

Problemi correlati