Pregunta

escribí mi propia clase PageStatePersister basado en SessionPageStatePersister que escribe los más recientes 10 Viewstates para una sesión de un disco compartido. Calculo este escalará mejor que mantener Viewstate en la sesión ya que todos los servidores web tienen acceso a ella, no van a tener que lidiar con la espiración, y usar menos memoria.

Cuando un usuario cierra el navegador se notifica al servidor y el servidor elimina los archivos que no se ha accedido durante dos horas. Hasta aquí todo bien, pero me pregunto si va a ser más rápido y más eficiente para almacenar Viewstate en una base de datos del servidor SQL en lugar.

  1. Cada archivo ViewState es 30k en promedio.
  2. En la actualidad sólo se lee un campo oculto para conseguir una llave Viewstate y acceder al archivo directamente y deserializar. No hay necesidad de ordenar o de búsqueda.
  3. habrá cerca de 2.000 usuarios simultáneos cada hora y guardar últimos los últimos 20 sesiones de estado de vista será de unos 20k vista temp archivos por hora.
  4. Se debe repetir periódicamente a través de archivos y borrar el archivo más antiguo.

Entonces, ¿cuál es mejor en este caso: un flatfile del sistema o un base de datos

¿Fue útil?

Solución

Sería mucho mejor escala para almacenar el ViewState en SQL Server. Si finalmente desea aumentar de 10 a 50 más reciente más reciente, por ejemplo, sería un aumento en la carga relativamente trivial DB. Disco I / O generalmente se debe evitar siempre que sea posible, moreso que DB I / O. operaciones de limpieza también funcionaría mucho mejor, ya que buscan a través de un terreno baldío de archivos abandonados en el disco es probablemente mucho más pesado que WHERE DateInserted > 20 minutes ago.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top