我正在設計一家商店,並在我以前的一些商店中存儲購物車在客戶端(Cookie),但我讀了一本書「使用Rails 4進行敏捷Web開發「,作者設計購物卡在服務器上保存在數據庫中?哪種方法更好?哪些優點和缺點?客戶端vs服務器端購物卡存儲
回答
這個問題更多的是關於如何處理會話數據(以安全的方式),而不是如何特別存儲購物車數據。
這兩種方法基本上是:
僅存儲會話中的Cookie ID,並存儲在服務器上的會話信息(在這種情況下,車的內容)。
將會話數據本身存儲在cookie中。服務器可以在處理請求期間讀取這些信息。
有一對夫婦的問題,當您在存儲在客戶端的cookie中的數據:
用戶可以修改的內容。這是一個重要的安全問題。從安全角度來看,您必須假定用戶修改了您存儲的每個字段,因此您必須檢查服務器端的所有內容。例如。當您將產品的價格存儲在您的Cookie中時,您不能認爲該價格實際上是正確的,因爲用戶可能已經更改了它。您必須重新從數據庫中獲取價格。由於很難想象所有可能被篡改的數據都會出錯,這是一個重要的問題。如果你只存儲會話ID,那麼你只需要檢查該ID的有效性(這可能是由你使用的框架完成的)。會話中的所有數據都是可信的,因爲它只存儲服務器端。
餅乾的大小有限(4kB iirc)。例如,如果您將產品說明存儲在cookie中,遲早會遇到麻煩。
數據保留在瀏覽器本地。如果我在工作時在您的網站上購物,請將一些物品放入我的籃子中,然後在我退房時重新打開網站,我的籃子就會變空。
您無法檢查所有客戶在服務器上的給定時間點存在哪些購物車項目。這對於庫存管理可能很重要。通常,您會希望在購物車中爲您的客戶預留一些合理的時間。如果只剩下一本書,並將其放入我的購物車中,則另一位客戶不應在我的會話處於活動狀態時將其放入購物車。如果我的購物車存儲在本地,則無法檢查此消息,因爲當其他客戶將商品放入其中時,我的Cookie不會在服務器上可用。當項目僅存在於客戶端時,您也無法將購物車信息用於統計或分析。
所以,如果你打算做得很好,我肯定會建議將你的購物車存儲在服務器端。另一方面,將它們存儲在客戶機上也有一些優點:
它很簡單,可以快速實施。
服務器上的會話管理可能會變得稍微複雜一點(儘管還有待觀察)。請注意,您並不一定需要自己將會話數據存儲在數據庫中。您的Web應用程序框架可以自動執行此操作,它帶有基本的會話管理。原則上你甚至不需要數據庫(文件或內存存儲應該可用),但由於無論如何你都需要一個數據庫,這可能是不相關的。
將數據存儲在服務器上時,仍然必須發送給客戶端才能顯示它。如果您使用的是JavaScript,則Cookie中的數據已經存在於客戶端上,而如果存儲在服務器上,則必須使用JSON和/或AJAX。
您不必清理舊購物車。當在服務器端存儲購物車時,您會希望它們在一段時間後過期並被移除。再一次,如果您的Web框架管理會話數據,即使您將數據存儲在服務器端,這也不會成爲問題,因爲會話數據將完全失效,並且框架將爲您執行清理。
- 1. Magento購物車存儲客戶端或服務器端?
- 2. 服務器端vs客戶端日曆
- 3. 客戶端vs服務器端
- 4. 存儲庫層VS Web層VS服務器端VS Alfresco的客戶端
- 5. 客戶端 - 服務器數據存儲
- 6. SAP JCo客戶端vs服務器
- 7. 節點JS客戶端vs服務器
- 8. JavaScript庫的客戶端存儲與服務器端同步
- 9. oAuth 2服務器端vs客戶端端
- 10. Java:服務器/客戶端 - >客戶端/客戶端
- 11. 應該在服務器端還是客戶端訂購陣列
- 12. Unity主服務器VS簡單客戶端服務器
- 13. 服務器客戶端緩存
- 14. 客戶端服務器 - (TCP)
- 15. BufferedReader,客戶端/服務器
- 16. JXTA客戶端 - 服務器
- 17. 客戶端服務器C++
- 18. 服務器客戶端iphone
- 19. 服務器和客戶端
- 20. 服務器/客戶端C#
- 21. Android客戶端服務器
- 22. Arduino客戶端/服務器
- 23. 服務器客戶端java
- 24. Java客戶端服務器
- 25. TCP客戶端服務器
- 26. 處理數據服務器端vs客戶端
- 27. Facebook API速率限制 - 服務器端vs客戶端
- 28. Web網格,客戶端綁定VS.服務器端HTML生成
- 29. asp.net中的嚮導,客戶端vs服務器端
一些評論: – AndrewW
ahem ... 使用網絡存儲代替cookies來存儲/訪問數據客戶端可以避開cookie的有限存儲大小和傳輸開銷。 但即使您將數據服務器端存儲在會話中,從不同瀏覽器訪問購物車的問題仍將存在。您需要讓用戶以某種方式進行身份驗證/登錄,以便您可以確定它是來自不同瀏覽器的相同用戶。 但問題的好總結。 – AndrewW