Maneira Ideal de armazenar informações do produto em carrinho de compras em asp.net

Estou a criar uma aplicação de comércio electrónico, onde tenho um carrinho de compras.

a minha estrutura actual é que, sempre que o utilizador salva o produto, coloco o produto no datável e datável para a sessão, por isso, até a sessão não estar cronometrada, o utilizador pode ter a lista que salvou.

no entanto, eu aumentei o tempo limite de sessão para 600mins (10 horas), mas a minha preocupação é, É esta é a melhor abordagem para armazenar informações de carrinho de compras, porque se há dizer para exemplo 1000 usuários acessando o site simultaneamente, haverá 1000 objeto de sessão criado no servidor, não irá deteriorar o desempenho do meu site.

Eu não posso armazená-lo na base de dados porque se o Usuário é Anônimo Eu Não tenho a coisa única sobre o usuário, dessa forma, se 1000 usuários estão acessando o site, todos os produtos vão se fundir, eu não serei capaz de obter o produto salvo pelo usuário atual.

Há outra melhor abordagem para este problema?

Author: Abbas, 2013-08-22

1 answers

Não devias implementar assim. Sessões de 10 horas são muito longas, se você tem 1000 usuários em seu site o seu servidor vai sofrer e vai criar alguns problemas de desempenho. Nos nossos sites de comércio electrónico criamos um cookie para utilizadores anónimos. Depois de fazer isso você tem duas soluções:
  1. armazenar a cesta inteira no cookie (basicamente lista de ID do produto + quantidade, mais dependendo das suas necessidades/estratégia) ou outras técnicas (por exemplo, localStorage).
  2. guarde um ID único no cookie e guarde o cesto na base de dados (tabela temporária) com o ID único cookie como identificador. Uma vez que o usuário logar no sistema você move esses dados para a tabela de cesto do Usuário.

Você pode facilmente alterar o tempo de expiração dos cookies (ou removê-lo) sem afetar o desempenho geral do seu servidor. Para IDs pode utilizar Guid.NewGuid().

Actualizar:

Mais detalhes sobre a minha segunda solução - cenário:
  1. página web da visita do utilizador
  2. você cria um cookie Sem data de validade: cartId com valor {[[0]} (o nome e o valor dependem de si).
  3. Clique Do Utilizador em"Buy"
  4. pegue no lado do servidor de cookies e adicione a cartId,produto/Quantidade à tabela "AnonymousBasket"
  5. Imagine que o usuário sai do site e volta um mês depois o cookie ainda estará aqui. Se o utilizador anónimo for ao seu cesto, poderá obter os seus produtos e quantidades com base nos seus produtos. sobre o valor do cookie.
  6. Se o utilizador se ligar, remova o cookie e mova os dados da tabela "AnonymousBasket" para "Basket"
  7. Agora o seu utilizador logado pode processar até à saída
Com esta solução, tudo persiste na base de dados e não requer sessões. Você pode alterar a expiração de seus cookies como você faz para sessões, alternativamente você pode limpar a tabela temporária sem qualquer risco ou criar estatísticas sobre usuários anônimos (por que eles não procederam ao check-out, quantos itens em média, que item,...).
 20
Author: glautrou, 2013-08-22 12:28:23