購(gòu)物車(chē)中數(shù)據(jù)的存放方式
發(fā)表時(shí)間:2024-02-06 來(lái)源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]aierong [原作] 第一次做BToC站點(diǎn)的購(gòu)物車(chē),總結(jié)了一下購(gòu)物車(chē)中數(shù)據(jù)的存放方式方式1:用會(huì)話會(huì)話中可以存放任何類(lèi)型數(shù)據(jù),每個(gè)用戶有一個(gè)唯一的會(huì)話ID,用此ID區(qū)分不同用戶的購(gòu)物車(chē)會(huì)話數(shù)據(jù)是存放在WEB服務(wù)器的內(nèi)存中的,如果使用購(gòu)物車(chē)的用戶比較多的話,這樣一來(lái)將占用大量服務(wù)器資源會(huì)話有一小...
aierong [原作]
第一次做BToC站點(diǎn)的購(gòu)物車(chē),總結(jié)了一下購(gòu)物車(chē)中數(shù)據(jù)的存放方式
方式1:用會(huì)話
會(huì)話中可以存放任何類(lèi)型數(shù)據(jù),每個(gè)用戶有一個(gè)唯一的會(huì)話ID,用此ID區(qū)分不同用戶的購(gòu)物車(chē)
會(huì)話數(shù)據(jù)是存放在WEB服務(wù)器的內(nèi)存中的,如果使用購(gòu)物車(chē)的用戶比較多的話,這樣一來(lái)將占用大量服務(wù)器資源
會(huì)話有一小缺陷,它是依靠COOKIE來(lái)與用戶通訊的,一旦用戶關(guān)閉COOKIE,使用會(huì)話將比較麻煩
當(dāng)然在ASP。NET中還有另2種方式保存會(huì)話數(shù)據(jù)
一種是指定另一臺(tái)服務(wù)器來(lái)存放會(huì)話數(shù)據(jù),這樣一來(lái)可以有效分擔(dān)WEB服務(wù)器的運(yùn)行開(kāi)銷(xiāo)。
另一種是把會(huì)話數(shù)據(jù)存放在MS SQL中,MS SQL是利用局部臨時(shí)表實(shí)現(xiàn)的,會(huì)話數(shù)據(jù)放在局部臨時(shí)表中,MS SQL為每一個(gè)局部臨時(shí)表也分配一個(gè)唯一的ID
,我想是用此ID區(qū)分不同用戶的不同會(huì)話數(shù)據(jù)的。但是我不推薦使用此方法,頻繁在數(shù)據(jù)庫(kù)里面建立和刪除臨時(shí)表對(duì)數(shù)據(jù)庫(kù)的開(kāi)銷(xiāo)太大
方式2:在數(shù)據(jù)庫(kù)里面用表(ShopingCart)
我喜歡的實(shí)現(xiàn)方式
表有幾個(gè)基本字段
CartId 購(gòu)物車(chē)ID(唯一)
Id 商品的ID(唯一)
Qty 用戶購(gòu)買(mǎi)商品的數(shù)量
CreateDate 購(gòu)物車(chē)創(chuàng)建時(shí)間
此表的字段CartId是區(qū)分不同用戶的購(gòu)物車(chē)的ID,要是登陸用戶,你可以在表中存放此登陸用戶的登陸名的ID,要是未登陸用戶使用購(gòu)物車(chē),
你可以給他分配一個(gè)GUID(全球唯一標(biāo)志)做購(gòu)物車(chē)ID
此方法有也有一些缺陷,一是它會(huì)造成大量無(wú)效數(shù)據(jù),大家都知道,使用購(gòu)物車(chē)的人,不一定會(huì)最終結(jié)帳購(gòu)買(mǎi)商品。但是使用購(gòu)物車(chē)就得
往表(ShopingCart)里面插入相關(guān)數(shù)據(jù),未登陸用戶一離開(kāi)站點(diǎn),他在表中的數(shù)據(jù)就成了一堆廢數(shù)據(jù),因?yàn)樗谙麓蔚顷憰r(shí),我們分配給他的
是一個(gè)新的CartId購(gòu)物車(chē)ID.有廢數(shù)據(jù)我們就得時(shí)常來(lái)維護(hù)此表,我們可以寫(xiě)一個(gè)清除廢數(shù)據(jù)的過(guò)程(利用字段CreateDate和CartId可以判斷無(wú)效數(shù)據(jù)),人工調(diào)用運(yùn)行也可以,要是想由MS SQL代我們來(lái)運(yùn)行,就可以設(shè)置一個(gè)JOB,由JOB自動(dòng)調(diào)用過(guò)程清楚廢數(shù)據(jù)
說(shuō)拉缺陷,我們?cè)撜f(shuō)說(shuō)此方式的優(yōu)點(diǎn)拉
1。占用系統(tǒng)資源少,我們可以把數(shù)據(jù)庫(kù)安置在一臺(tái)電腦中,WEB服務(wù)器安置在另一電腦中,系統(tǒng)資源充分發(fā)揮
2。購(gòu)物車(chē)中數(shù)據(jù)可以得到有效保留,我們可以試想一客戶在購(gòu)物時(shí),突然某其他原因(死機(jī)等原因)離開(kāi)了購(gòu)物站,他在購(gòu)物車(chē)中數(shù)據(jù)有效保
留下來(lái),他下次登陸時(shí)購(gòu)物車(chē)中還有上次保留的數(shù)據(jù),避免用戶再次選購(gòu)商品的操作(此功能只對(duì)登陸用戶的購(gòu)物車(chē)有效) ,要是用會(huì)話實(shí)現(xiàn)
購(gòu)物車(chē),所有用戶一旦離開(kāi)站點(diǎn),他的購(gòu)物車(chē)中數(shù)據(jù)全部失效
好拉,我就總結(jié)了這些,由于剛剛接觸ASP。NET,對(duì)許多方面還認(rèn)識(shí)不多,可能還有其他一些方法實(shí)現(xiàn)購(gòu)物車(chē),希望大家能夠給與指點(diǎn),謝謝大家