La cantidad de datos que puede/se debe almacenar en un objeto de sesión de los usuarios?

StackOverflow https://stackoverflow.com/questions/73008

  •  09-06-2019
  •  | 
  •  

Pregunta

Tenemos varias asistente de estilo de las aplicaciones de formulario en nuestro sitio web, donde nos captura la información del usuario en cada página y, a continuación, enviar a un servidor de proceso mediante un servicio web.

Lamentablemente no podemos enviar la información en trozos durante cada formulario de presentación así que tenemos que almacenar la sesión del usuario hasta el final del proceso y enviar todo al mismo tiempo.

Es la cantidad de memoria del servidor/sql server espacio en el disco la única limitación de lo mucho que me puede almacenar en las sesiones de los usuarios o hay algo más que deba tener en cuenta?

Editar:El sitio está construido en ASP.NET los formularios web.

¿Fue útil?

Solución

Suponiendo que la información no es sensible, entonces usted podría almacenar la información en una cookie, que podría reducir la cantidad de información necesaria para ser almacenado en el servidor.Esta también permite acceder a la información a través de JavaScript.

Alternativamente, usted podría utilizar el viewstate para almacenar la información, aunque esto puede dar lugar a grandes cantidades de datos que se envían entre el servidor y el cliente, y no es mi solución preferida.

La cantidad de información de la sesión se debe almacenar varía enormemente dependiendo de la aplicación, el número de usuarios esperados, especificación de servidor, etc.Para dar una respuesta más precisa requeriría más información :)

Por último, asumiendo que la información recopilada a lo largo del proceso no se requiere de la página a página, a continuación, usted podría almacenar toda la información en una tabla de base de datos y sólo almacenar los registros identificador único de la sesión.Como cada página se presenta la base de datos de registro es actualizado y, a continuación, en la página final todas la información se recupera y presentado.Esta no es una idea de la solución si usted necesita para recuperar la información anterior en cada página subsiguiente, debido a la cantidad de db lee necesario.

Otros consejos

Usted también podría tener 1 página asp con todo el html del formulario, y ocultar partes de ella hasta que el usuario rellene y "envía" la parte visible...

luego, simplemente ocultar la parte que se llena y mostrará la siguiente parte de la forma...

Esto sería extremadamente fácil en el .NET framework, el uso de paneles para cada paso del asistente "" y agregar loggic cuando para mostrar y ocultar cada panel.

entonces usted tendrá todos los datos en una página.

Si utiliza un tradicional HTTP modelo (es decir,no utilice runat="server"), se pueden enviar los datos a otra página asp y colocar los datos enviados en el formulario oculto elementos, usted puede hacer esto para sin embargo, muchas páginas que usted necesita evitando colocar cualquier cosa en una variable de sesión.

Ya que es problemático desde el punto de vista del rendimiento de almacenar grandes cantidades de datos de usuario en el objeto de la Sesión, ASP.Net ofrece otras soluciones en la parte superior de lo que se menciona en los puestos de arriba. ASP.NET Perfil de Proveedor permite conservar sesión relacionadas con la información en una base de datos.También puede utilizar El Estado De Sesión De Servidor que utiliza un servidor independiente para almacenar toda la información de la Sesión.Ambos de estas situaciones a tener en cuenta si usted necesita usar clusters o equilibradores de carga, los servidores aún puede reconocer la sesión de información a través de diferentes servidores.Si se almacena la información en la Sesión Http objeto, te encuentras con el problema de que un usuario debe ir siempre en el mismo servidor para esa sesión.

Período de sesiones, viewstate, de la base de datos.Todos estos son lentos, pero conseguirá el trabajo hecho.

Campos ocultos de formulario es la respuesta que más me gusta.

Hay otras formas para conservar el estado.Las Cookies, ventana emergente, conjunto de marcos o iframes.

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