day79_淘淘商城專案_商城購物車系統實現三種方案總結
阿新 • • 發佈:2018-12-07
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+入庫。
淘寶並不准許使用者未登入裝填新增購物車,應該採用的是直接入庫。