2009-09-03 24 views
20

Estoy en proceso de crear un sitio web que involucre un carrito de compras. Hay dos requisitos principales:carrito de compras para usuarios no registrados

  1. El usuario experiencia chicos quieren Iniciar sesión/autenticación para ser el último paso en todo el flujo de trabajo. El usuario puede hacer todas las compras y solo se le solicita que inicie sesión al momento de pagar.

  2. El carrito de la compra no debe caducar (ni siquiera en el navegador cerrado), a menos que el usuario (registrado o no) haga el check-out.

En el contexto anterior, tengo la siguiente pregunta con respecto al mantenimiento del estado del carro:

¿Debo ir con sesiones de archivos basados ​​en bases de datos o? Tenga en cuenta que esto sería para usuarios no registrados. Mi aprensión es que terminaré teniendo muchos registros en la base de datos.

Otra opción parece ser poner el contenido del carro en una cookie encriptada, pero luego hay una limitación de tamaño en el archivo de la cookie.

¿Qué harías en este caso? Realmente apreciaría tus respuestas.

Respuesta

15
  1. Seguimiento de un usuario. Utilice un GUID codificado en una cookie con un n Año de caducidad.

  2. Almacenar una bolsa de compras. No desea almacenar la bolsa en la cookie, principalmente debido a su posible tamaño. Esto deja la opción de persistirlo a un medio y recuperarlo del medio.Usar cualquier cosa, excepto una base de datos para esto, sería como retroceder en el tiempo, las bases de datos son excelentes para almacenar y recuperar datos.

  3. Gestión de su bolsa de compras. Ahora, la pregunta de su esquema, en primer lugar, si el va a ser ejecutar consultas contra las bolsas de la compra en la base de datos (es decir, el número de tiendas bolsas contienen elemento x) es probable que desea una tradicional esquema relacional . Sin embargo, esto tiene gastos generales en términos de inserción. actualización, seleccionando (y uniéndose) y borrando datos de la bolsa (en algún momento tendrá bolsas que nunca volverán a usarse pero están ocupando un disco precioso espacio). Con un sitio ocupado, este es un justo algunas Traranactions por segundo, , pero cualquier base de datos debe ser capaz de hacer frente. Si no necesita consultar las bolsas de la base de datos, , puede almacenarlo como XML. Solo serializar la bolsa y volcarla en una tabla , con la PK como GUID como almacenada en la cookie de los usuarios. Este sería mucho más rápido que un esquema tradicional , además de que podría desgarrar siempre el XML en el futuro si surgiera un requerimiento para un esquema relacional.

Esto es lo que hacemos (Xml Bag), y tenemos más de un millón de clientes.

6

Me gustaría ir con las sesiones administradas de base de datos sobre las sesiones administradas de archivos. Asegúrese de tener una marca de tiempo de la sesión para que eventualmente pueda matar las sesiones anteriores (si han pasado 12 meses, es posible que el comprador no regrese para los artículos originalmente en el carro).

Hacer esto con una base de datos en lugar de archivos hará que sea más fácil caducar la información muy antigua.

Tenga en cuenta que la sesión de la base de datos solo será válida siempre que la cookie esté vinculada a la computadora del usuario. Si el usuario vuelve a la tienda desde un navegador diferente, no encontrará su sesión. Si dos personas comparten la misma computadora, se se encuentran la sesión. Esperemos que no haya elementos embarazosos potenciales en el carrito ...

1

Almacene en las cookies el AnonymousSessionID, con el que asocia un carrito de compras en la base de datos.

Luego tendrá una tarea de programador para borrar las sesiones anónimas después de un tiempo (por ejemplo, un día). Esto mantendrá su base de datos limpia de sesiones abandonadas.

Si un usuario se registra, reasignar su carrito de compras con su cuenta de forma permanente. Si los usuarios hacen un pedido, vacías su carrito de compras.

0

Con esas especificaciones iría con un estado de sesión basado en la base de datos. Pero debe leer detenidamente cómo se maneja el estado de la sesión en su servidor web de su elección. Dado que desea poder revivir el estado a la persona correcta.

0

Si está utilizando ASP.NET esto es lo que soy (aproximadamente) para hacer:

  • utilizar un Profile para capturar los usuarios de correo electrónico tan pronto como sea posible (para enviarlas por correo electrónico si ellos no completar el orden). puede habilitar las propiedades de perfil anónimo que se conservan en la base de datos de aspnet, incluso si el usuario realmente no se ha registrado realmente.
  • adhieren una bolsa XML que representa un pedido en sesión. Esto persiste en la base de datos con una identificación de identidad regular.
  • almacena la identificación del carrito en ASP.NET Profile. De esta manera, cuando la sesión expire, puede volver a cargarla desde la ID en el perfil. Esto tiene la ventaja de que el usuario nunca ve el ID de la compra en una galleta y se puede conectar fácilmente los registros entre la base de datos de miembros/perfil y la tienda que está utilizando para sus pedidos

(no intentes para almacenar el código XML orden en el Perfil. Creo que eso está pidiendo problemas de rendimiento, pero en teoría podría suponer)

0

Creo que tiene algunas expectativas que gestionar, o tal vez no tenía claros los requisitos.

  1. La experiencia de usuario chicos quieren Iniciar sesión/autenticación para ser el último paso en todo el flujo de trabajo. El usuario puede hacer todas las compras y solo debe iniciar sesión en el momento de pagar.
  2. El carrito de la compra no debe caducar (ni siquiera en el navegador cerrado) a menos que el usuario (registrado o no) haga el check-out.

Específicamente, un anónimo, no se ha iniciado la sesión en el carrito del usuario que se salvan? Eso es una locura Asegúrese de que no sea una expectativa y aclárelo en sus documentos de diseño.

+4

eso no es una locura en absoluto. con frecuencia recibimos pedidos de personas 24-48 horas después de que hayan visitado nuestro sitio por primera vez. mantenemos la orden guardada incluso si no han creado una cuenta. debe tener cuidado cuando purgar los datos y, por supuesto, qué tan grande es el carrito y considerar cuántos usuarios tiene. la locura no es para mí :-) –

Cuestiones relacionadas