Domanda

Supponi che io abbia circa 10 "categorie" che devo fare riferimento in un'app Web. Attualmente sto memorizzando queste categorie nel DB e le sto recuperando (nome della categoria e ID) durante il pageload nella mia pagina di base, memorizzandole in una tabella hash e quindi usando la tabella hash per fare riferimento alle categorie. Mi sono reso conto che la chiamata DB viene effettuata durante ogni pageload. Ho solo bisogno di estrarre queste categorie una volta perché non cambiano mai durante una determinata sessione. Qual è il modo migliore per farlo?

  1. Fai quello che sto facendo, ma memorizzalo come variabile dell'applicazione?

  2. Codice fisso le categorie nel codice e eliminare il database?

  3. Archivia le categorie in una variabile di sessione? E chiamare il DB solo se la sessione è vuota?

  4. O qualcos'altro?

Sono solo curioso di sapere quale sia la migliore pratica per fare queste cose.

È stato utile?

Soluzione

Se le categorie sono dipendenti dall'utente, le memorizzerei nella variabile Session; altrimenti userei la funzionalità di cache ASP.NET (o la cache distribuita preferita). Ciò consente di evitare di colpire il database e di controllare per quanto tempo le categorie devono essere memorizzate nella cache.

Altri suggerimenti

Chiamare il database non è sempre così costoso come sembra, un tipico sito Web effettua dozzine di chiamate al DB su ogni pageload. Ma se diventa problematico in termini di prestazioni, considera l'utilizzo di una soluzione ORM. Mi viene in mente l'eccellente open source NHibernate , che è il "de facto"; standard per la mappatura di database su classi e oggetti. Oltre alla mappatura, fornisce automaticamente due livelli di cache e pool di connessioni. Senza troppi problemi, il tuo sito web supera di gran lunga quelli di una frana.

L'aspetto negativo dell'utilizzo di un ORM? Per molte persone, è considerata una curva di apprendimento piuttosto ripida. Se vuoi leggere questo, assicurati di visitare le Best practice NHibernate . Una lettura difficile all'inizio, ma sicuramente utile.

Se combini NHibernate con FluentNHibernate , diventa un gioco da ragazzi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top