典雅電商:購物車功能詳解
購物車是電商系統(tǒng)的標(biāo)配功能,暫存用戶想要購買的商品。分為添加商品、列表查看、結(jié)算下單三個(gè)動(dòng)作。荊州典雅來談?wù)勝徫镘嚨闹匾δ堋?br/>
技術(shù)設(shè)計(jì)并不是特別復(fù)雜,存儲(chǔ)的信息也相對(duì)有限。這里特別拿出來單講主要是用戶體驗(yàn)層面要注意幾個(gè)問題:
添加購物車時(shí),后端校驗(yàn)用戶未登錄,常規(guī)思路,引導(dǎo)用戶跳轉(zhuǎn)登錄頁,待登錄成功后,再添加購物車。多了一步操作,給用戶一種強(qiáng)迫的感覺,體驗(yàn)會(huì)比較差。有沒有更好的方式?
如果細(xì)心體驗(yàn)京東、淘寶等大平臺(tái),你會(huì)發(fā)現(xiàn)即使未登錄態(tài)也可以添加購物車,這到底是怎么實(shí)現(xiàn)的?
細(xì)細(xì)琢磨其實(shí)原理并不復(fù)雜,服務(wù)端這邊在用戶登錄態(tài)校驗(yàn)時(shí),做了分支路由,當(dāng)用戶未登錄時(shí),會(huì)創(chuàng)建一個(gè)臨時(shí)
Token,作為用戶的唯一標(biāo)識(shí),購物車數(shù)據(jù)掛載在該
Token 下,為了避免購物車數(shù)據(jù)相互影響以及設(shè)計(jì)的復(fù)雜度,這里會(huì)有一個(gè)臨時(shí)購物車表。
當(dāng)然,臨時(shí)購物車表的數(shù)據(jù)量并不會(huì)太大,why?用戶不會(huì)一直閑著添加購物車玩,當(dāng)用戶登錄后,查看自己的購物車,服務(wù)端會(huì)從請(qǐng)求的 cookie 里查找購物車 Token 標(biāo)識(shí),并查詢臨時(shí)購物車表是否有數(shù)據(jù),然后合并到正式購物車表里。
特別說明:
臨時(shí)購物車是不是一定要在服務(wù)端存儲(chǔ)?未必。
有架構(gòu)師傾向前置存儲(chǔ),將數(shù)據(jù)存儲(chǔ)在瀏覽器,這部分?jǐn)?shù)據(jù)畢竟不是共享的,但是不太好的增加了設(shè)計(jì)的復(fù)雜度。
客戶端需要借助本地?cái)?shù)據(jù)索引,遠(yuǎn)程請(qǐng)求查完整信息
如果是登錄態(tài),還要增加數(shù)據(jù)合并邏輯
考慮到這兩部分?jǐn)?shù)據(jù)只是用戶標(biāo)識(shí)的差異性,所以荊州典雅電商還是建議統(tǒng)一存到服務(wù)端,日后即使業(yè)務(wù)邏輯變更,只需要改一處就可以了,畢竟自運(yùn)營系統(tǒng),良好的可維護(hù)性也需要我們非常關(guān)注的。