來(lái)自森大科技官方博客
/tupian/20230521/p%3e
使用Session和Cookie實(shí)現(xiàn)購(gòu)物車(chē)的比較
創(chuàng)新互聯(lián)是網(wǎng)站建設(shè)專(zhuān)家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷(xiāo),專(zhuān)業(yè)領(lǐng)域包括成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、電商網(wǎng)站制作開(kāi)發(fā)、小程序定制開(kāi)發(fā)、微信營(yíng)銷(xiāo)、系統(tǒng)平臺(tái)開(kāi)發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開(kāi)發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷(xiāo)的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶(hù)提供全方位的互聯(lián)網(wǎng)品牌整合方案!購(gòu)物車(chē)相當(dāng)于現(xiàn)實(shí)中超市的購(gòu)物車(chē),不同的是一個(gè)是實(shí)體車(chē),一個(gè)是虛擬車(chē)而已。用戶(hù)可以在購(gòu)物網(wǎng)站的不同頁(yè)面之間跳轉(zhuǎn),以選購(gòu)自己喜愛(ài)的商品,點(diǎn)擊購(gòu)買(mǎi)時(shí),該商品就自動(dòng)保存到你的購(gòu)物車(chē)中,重復(fù)選購(gòu)后,最后將選中的所有商品放在購(gòu)物車(chē)中統(tǒng)一到付款臺(tái)結(jié)賬,這也是盡量讓客戶(hù)體驗(yàn)到現(xiàn)實(shí)生活中購(gòu)物的感覺(jué)。服務(wù)器通過(guò)追蹤每個(gè)用戶(hù)的行動(dòng),以保證在結(jié)賬時(shí)每件商品都物有其主。
購(gòu)物車(chē)的功能包括以下幾項(xiàng):
把商品添加到購(gòu)物車(chē),即訂購(gòu)
刪除購(gòu)物車(chē)中已定購(gòu)的商品
修改購(gòu)物車(chē)中某一本圖書(shū)的訂購(gòu)數(shù)量
清空購(gòu)物車(chē)
顯示購(gòu)物車(chē)中商品清單及數(shù)量、價(jià)格
實(shí)現(xiàn)購(gòu)物車(chē)的關(guān)鍵在于服務(wù)器識(shí)別每一個(gè)用戶(hù)并維持與他們的聯(lián)系。但是HTTP協(xié)議是一種“無(wú)狀態(tài)(Stateless)”的協(xié)議,因而服務(wù)器不能記住是誰(shuí)在購(gòu)買(mǎi)商品,當(dāng)把商品加入購(gòu)物車(chē)時(shí),服務(wù)器也不知道購(gòu)物車(chē)?yán)镌扔行┦裁?,使得用?hù)在不同頁(yè)面間跳轉(zhuǎn)時(shí)購(gòu)物車(chē)無(wú)法“隨身攜帶”,這都給購(gòu)物車(chē)的實(shí)現(xiàn)造成了一定的困難。
目前購(gòu)物車(chē)的實(shí)現(xiàn)主要是通過(guò)cookie、session或結(jié)合數(shù)據(jù)庫(kù)的方式。下面分析一下它們的機(jī)制及作用。
cookie
cookie是由服務(wù)器產(chǎn)生,存儲(chǔ)在客戶(hù)端的一段信息。它定義了一種Web服務(wù)器在客戶(hù)端存儲(chǔ)和返回信息的機(jī)制,cookie文件它包含域、路徑、生存期、和由服務(wù)器設(shè)置的變量值等內(nèi)容。當(dāng)用戶(hù)以后訪問(wèn)同一個(gè)Web服務(wù)器時(shí),瀏覽器會(huì)把cookie原樣發(fā)送給服務(wù)器。通過(guò)讓服務(wù)器讀取原先保存到客戶(hù)端的信息,網(wǎng)站能夠?yàn)闉g覽者提供一系列的方便,例如在線交易過(guò)程中標(biāo)識(shí)用戶(hù)身份、安全要求不高的場(chǎng)合避免用戶(hù)重復(fù)輸入名字和密碼、門(mén)戶(hù)網(wǎng)站的主頁(yè)定制、有針對(duì)性地投放廣告等等。利用cookie的特性,大大擴(kuò)展了WEB應(yīng)用程序的功能,不僅可以建立服務(wù)器與客戶(hù)機(jī)的聯(lián)系,因?yàn)閏ookie可以由服務(wù)器定制,因此還可以將購(gòu)物信息生成cookie值存放在客戶(hù)端,從而實(shí)現(xiàn)購(gòu)物車(chē)的功能。用基于cookie的方式實(shí)現(xiàn)服務(wù)器與瀏覽器之間的會(huì)話或購(gòu)物車(chē),有以下特點(diǎn):
cookie存儲(chǔ)在客戶(hù)端,且占用很少的資源,瀏覽器允許存放300個(gè)cookie,每個(gè)cookie的大小為4KB,足以滿足購(gòu)物車(chē)的要求,同時(shí)也減輕了服務(wù)器的負(fù)荷;
cookie為瀏覽器所內(nèi)置,使用方便。即使用戶(hù)不小心關(guān)閉了瀏覽器窗口,只要在cookie定義的有效期內(nèi),購(gòu)物車(chē)中的信息也不會(huì)丟失;
cookie不是可執(zhí)行文件,所以不會(huì)以任何方式執(zhí)行,因此也不會(huì)帶來(lái)病毒或***用戶(hù)的系統(tǒng);
基于cookie的購(gòu)物車(chē)要求用戶(hù)瀏覽器必須支持并設(shè)置為啟用cookie,否則購(gòu)物車(chē)則失效;
存在著關(guān)于cookie侵犯訪問(wèn)者隱私權(quán)的爭(zhēng)論,因此有些用戶(hù)會(huì)禁止本機(jī)的cookie功能。
session
session是實(shí)現(xiàn)購(gòu)物車(chē)的另一種方法。session提供了可以保存和跟蹤用戶(hù)的狀態(tài)信息的功能,使當(dāng)前用戶(hù)在session中定義的變量和對(duì)象能在頁(yè)面之間共享,但是不能為應(yīng)用中其他用戶(hù)所訪問(wèn),它與cookie最重大的區(qū)別是,session將用戶(hù)在會(huì)話期間的私有信息存儲(chǔ)在服務(wù)器端,提高了安全性。在服務(wù)器生成session后,客戶(hù)端會(huì)生成一個(gè)sessionid識(shí)別號(hào)保存在客戶(hù)端,以保持和服務(wù)器的同步。這個(gè)sessionid是只讀的,如果客戶(hù)端禁止cookie功能,session會(huì)通過(guò)在URL中附加參數(shù),或隱含在表單中提交等其他方式在頁(yè)面間傳送。因此利用session實(shí)施對(duì)用戶(hù)的管理則更為安全、有效。
同樣,利用session也能實(shí)現(xiàn)購(gòu)物車(chē),這種方式的特點(diǎn)是:
session用新的機(jī)制保持與客戶(hù)端的同步,不依賴(lài)于客戶(hù)端設(shè)置;
與cookie相比,session是存儲(chǔ)在服務(wù)器端的信息,因此顯得更為安全,因此可將身份標(biāo)示,購(gòu)物等信息存儲(chǔ)在session中;
session會(huì)占用服務(wù)器資源,加大服務(wù)器端的負(fù)載,尤其當(dāng)并發(fā)用戶(hù)很多時(shí),會(huì)生成大量的session,影響服務(wù)器的性能;
因?yàn)閟ession存儲(chǔ)的信息更敏感,而且是以文件形式保存在服務(wù)器中,因此仍然存在著安全隱患。
結(jié)合數(shù)據(jù)庫(kù)的方式
這也是目前較普遍的模式,在這種方式中,數(shù)據(jù)庫(kù)承擔(dān)著存儲(chǔ)購(gòu)物信息的作用,session或cookie則用來(lái)跟蹤用戶(hù)。這種方式具有以下特點(diǎn):
數(shù)據(jù)庫(kù)與cookie分別負(fù)責(zé)記錄數(shù)據(jù)和維持會(huì)話,能發(fā)揮各自的優(yōu)勢(shì),使安全性和服務(wù)器性能都得到了提高;
每一個(gè)購(gòu)物的行為,都要直接建立與數(shù)據(jù)庫(kù)的連接,直至對(duì)表的操作完成后,連接才釋放。當(dāng)并發(fā)用戶(hù)很多時(shí),會(huì)影響數(shù)據(jù)庫(kù)的性能,因此,這對(duì)數(shù)據(jù)庫(kù)的性能提出了更高的要求;
使cookie維持會(huì)話有賴(lài)客戶(hù)端的支持。
各種方式的選擇:
雖然cookie可用來(lái)實(shí)現(xiàn)購(gòu)物車(chē),但必須獲得瀏覽器的支持,再加上它是存儲(chǔ)在客戶(hù)端的信息,極易被獲取,所以這也限制了它存儲(chǔ)更多,更重要的信息。所以一般cookie只用來(lái)維持與服務(wù)器的會(huì)話,例如國(guó)內(nèi)大的當(dāng)當(dāng)網(wǎng)絡(luò)書(shū)店就是用cookie保持與客戶(hù)的聯(lián)系,但是這種方式大的缺點(diǎn)是如果客戶(hù)端不支持cookie就會(huì)使購(gòu)物車(chē)失效。
Session 能很好地與交易雙方保持會(huì)話,可以忽視客戶(hù)端的設(shè)置。在購(gòu)物車(chē)技術(shù)中得到了廣泛的應(yīng)用。但session的文件屬性使其仍然留有安全隱患。
結(jié)合數(shù)據(jù)庫(kù)的方式雖然在一定程度上解決了上述的問(wèn)題,但從上面的例子可以看出:在這種購(gòu)物流程中涉及到對(duì)數(shù)據(jù)庫(kù)表的頻繁操作,尤其是用戶(hù)每選購(gòu)一次商品,都要與數(shù)據(jù)庫(kù)進(jìn)行連接,當(dāng)用戶(hù)很多的時(shí)候就加大了服務(wù)器與數(shù)據(jù)庫(kù)的負(fù)荷
來(lái)自森大科技官方博客
/tupian/20230521/p%3e
文章名稱(chēng):Session和Cookie實(shí)現(xiàn)購(gòu)物車(chē)-創(chuàng)新互聯(lián)
文章源于:http://weahome.cn/article/djihhc.html