Domanda

ho scritto la mia classe PageStatePersister sulla base di SessionPageStatePersister che scrive i più recenti 10 Viewstates per una sessione di un disco condiviso. Immagino che questo scalerà meglio che tenere Viewstate in sessione dal momento che tutti i server web hanno accesso ad esso, non avranno a che fare con la scadenza, e utilizzare meno memoria.

Quando un utente chiude il browser lo comunica il server e il server elimina i file che non sono stati aperti per due ore. Fin qui tutto bene, ma mi chiedo se sarà più veloce ed efficiente per memorizzare Viewstate in un database SQL Server, invece.

  1. Ogni file ViewState è 30k in media.
  2. Attualmente legge solo un campo nascosto per ottenere una chiave Viewstate e accedere direttamente al file e deserializzare. Non c'è alcun bisogno di ordinare o di ricerca.
  3. Non ci saranno circa 2000 utenti simultanei ogni ora e di risparmio ultimi 20 sessioni ultimi ViewState sarà di circa 20k vista Temp file all'ora.
  4. Deve periodicamente scorrere i file e cancellare il file più vecchio.

Così che è meglio in questo caso: un flatfile di sistema o un database

È stato utile?

Soluzione

Sarebbe vanno molto meglio per memorizzare il ViewState in SQL Server. Se alla fine si vuole aumentare da 10 a 50 più recente più recente, ad esempio, sarebbe un aumento relativamente banale del carico di DB. Disk I / O deve essere generalmente evitato per quanto possibile, moreso che DB di I / O. operazioni di pulitura sarebbe anche funzionano molto meglio, come diretto attraverso un deserto di file abbandonati sul disco è probabilmente molto più pesante di WHERE DateInserted > 20 minutes ago.

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