1. 程式人生 > >day79_淘淘商城專案_商城購物車系統實現三種方案總結

day79_淘淘商城專案_商城購物車系統實現三種方案總結

1、商城購物車系統實現的三種方案

1.1、session

  將購物車直接存放到與使用者相關的session中。
優點:
  程式碼實現超級簡單。
缺點:
  購物車存在session當中,如果session銷燬,購物車就沒有了。(session只存在於一次會話中。)
  使用者未登入的時候不能新增購物車。
  購物車使用了session,而session是存在於記憶體資源中,消耗了大量的記憶體資源。非常不好。
  叢集情況下,session很難共享,無法進行水平擴充套件。(tomcat的session廣播對資源消耗嚴重,即tomcat的頻寬不幹別的了,就去廣播了。)

1.2、cookie

  將購物車直接存放到瀏覽器的cookie中。
優點:
  在不登陸的情況下也可以新增購物車。
  不佔用服務端儲存空間。
  使用者體驗好。
  程式碼實現簡單。
缺點:
  cookie中儲存的容量有限。最大4k。
  cookie佔用的是瀏覽器的快取,可能使用者會定期刪除cookie。
  把購物車資訊儲存在cookie中,更換裝置購物車資訊不能同步。

1.3、cookie+入庫 / 直接入庫

  對於未登陸使用者,將購物車放到cookie中,對於已登陸使用者將購物車放入資料庫中。
  將購物車持久化到資料庫中。這裡的資料庫指的是關係型資料庫或者非關係型資料庫
優點:
  關係型資料庫:mysql資料庫(資料完整性比較好)
  非關係型資料庫:redis資料庫(讀寫速度快)
缺點:
  相對於session和cookie,沒啥缺點。
  佔用服務端資源。

2、購物車實現總結

  自己寫著玩的程式碼可以使用cookie+session。
  真實場景應該是要使用cookie+入庫,或者直接入庫。
  京東准許未登入狀態新增購物車,應該採用的是cookie+入庫。
  淘寶並不准許使用者未登入裝填新增購物車,應該採用的是直接入庫。