一些關(guān)于asp 購(gòu)物車(chē)的想法
2024-05-04 11:00:32
供稿:網(wǎng)友
問(wèn)題: 1.購(gòu)物車(chē)中的數(shù)據(jù)是否應(yīng)該存儲(chǔ)在數(shù)據(jù)庫(kù)中?
我特別想知道在真正的項(xiàng)目中,那些真正的軟件工程師是如何考慮這個(gè)問(wèn)題的。在Google上一搜,搜到了一篇咱園子里一位網(wǎng)友的觀點(diǎn):購(gòu)物車(chē)應(yīng)該是個(gè)臨時(shí)存儲(chǔ)數(shù)據(jù)的模塊,他將其存放在Session對(duì)象中。這位網(wǎng)友說(shuō)的很有道理,不過(guò)我并不喜歡這樣的做法。如果大家都將其存儲(chǔ)在Session對(duì)象中,成千上萬(wàn)個(gè)用戶一同購(gòu)物的話,想必ASP.NET服務(wù)器必將承受巨大的負(fù)載。也許像我們國(guó)內(nèi)的網(wǎng)站可能會(huì)好一些,但想Amazon這樣的網(wǎng)站,怎么做的呢?Amazon中國(guó)網(wǎng)站,也就是Joyo的網(wǎng)站,并不是將其存儲(chǔ)在Session對(duì)象中,因?yàn)槲胰绻@次放入購(gòu)物車(chē)中的商品沒(méi)有提交訂單,下次登錄后購(gòu)物車(chē)中還會(huì)有這些商品。因此,我想他們可能是將這些購(gòu)物車(chē)中的數(shù)據(jù)放入了數(shù)據(jù)庫(kù)中。
回復(fù): 把購(gòu)物車(chē)存放在Session中,這種做法似乎只存在于大學(xué)里的課程設(shè)計(jì)或者一些無(wú)人在意的實(shí)習(xí)項(xiàng)目中出現(xiàn)。事實(shí)上,基本所有的電子商務(wù)網(wǎng)站都把購(gòu)物車(chē)數(shù)據(jù)存放到了數(shù)據(jù)庫(kù)里。下面是一些解釋和設(shè)計(jì)上需要注意的地方:
1、Session并不適合做大數(shù)據(jù)量的數(shù)據(jù)存放,當(dāng)用戶比較多的時(shí)候勢(shì)必影響服務(wù)器性能,這是應(yīng)該避免的。
2、Session存在意外丟失的問(wèn)題,或者當(dāng)用戶不小心關(guān)閉瀏覽器,都會(huì)引起購(gòu)物車(chē)內(nèi)物品全部丟失,用戶體驗(yàn)很不好
3、Cookies可以解決上面一條里Session的問(wèn)題,但是Cookies的長(zhǎng)度限制,以及使用Cookies時(shí)的通訊開(kāi)銷(xiāo),還有安全性方面考慮,Cookies并不適合做購(gòu)物車(chē)
4、比較好的用戶體驗(yàn)是,無(wú)論用戶登錄與否,都可以在一定時(shí)間內(nèi)記錄購(gòu)物車(chē)狀態(tài),這就要求數(shù)據(jù)庫(kù)內(nèi)購(gòu)物車(chē)不能與用戶捆綁太死
5、放到購(gòu)物車(chē)?yán)锏纳唐罚话愣际怯匈?gòu)買(mǎi)意向的商品,但并不一定會(huì)成為真實(shí)的訂單,這時(shí)候,保留這份數(shù)據(jù),對(duì)數(shù)據(jù)挖掘、業(yè)務(wù)分析有至關(guān)重要的作用
問(wèn)題: 2.關(guān)于并發(fā)?
原來(lái)我在開(kāi)發(fā)自己的模擬網(wǎng)站的時(shí)候,曾經(jīng)想到這樣一個(gè)問(wèn)題:如果一個(gè)客戶在網(wǎng)站將一些圖書(shū)放入了購(gòu)物車(chē),那么這些數(shù)量的圖書(shū)是否應(yīng)該從庫(kù)存中減去呢?當(dāng)時(shí)我是這樣做了。我將購(gòu)物車(chē)中相應(yīng)圖書(shū)的數(shù)量從數(shù)據(jù)庫(kù)中減去,以防止此時(shí)其他用戶看到”虛”的庫(kù)存數(shù)量(如果沒(méi)有減去,那么其他用戶是可以購(gòu)買(mǎi)的。例如:庫(kù)存中圖書(shū)的數(shù)量是10本,客戶A將10本放入自己的購(gòu)物車(chē),此時(shí)客戶B也將10本放入自己的購(gòu)物車(chē),那么誰(shuí)將購(gòu)買(mǎi)到此書(shū)將成為一個(gè)矛盾)。不過(guò)我這樣做的結(jié)果是,每當(dāng)客戶更新購(gòu)物車(chē)的同時(shí)就會(huì)同數(shù)據(jù)庫(kù)有一次交流,加大了數(shù)據(jù)服務(wù)器的負(fù)擔(dān)。Amazon.cn在這方面做的也不是很好,前些日子相信大家可能都遇到了當(dāng)購(gòu)買(mǎi)《深入理解操作系統(tǒng)》一書(shū)的時(shí)候,本來(lái)生成了訂單,但是卻在第二天告知缺貨的事情。這一事件確實(shí)非常影響Amazon.cn的信譽(yù),不知道現(xiàn)在他們的系統(tǒng)是否已經(jīng)解決這一問(wèn)題,不過(guò)現(xiàn)在《深入理解操作系統(tǒng)》一書(shū)的Joyo價(jià)已經(jīng)今非昔比了。不知道各位高手是如何解決這一問(wèn)題的,歡迎大家將自己的成功經(jīng)驗(yàn)寫(xiě)在評(píng)論中。