購物車的實現原理

 

購物車至關於現實中超市的購物車,不一樣的是一個是實體車,一個是虛擬車而已。用戶能夠在購物網站的不一樣頁面之間跳轉,以選購本身喜好的商品,點擊購買時,該商品就自動保存到你的購物車中,重複選購後,最後將選中的全部商品放在購物車中統一到付款臺結帳,這也是儘可能讓客戶體驗到現實生活中購物的感受。服務器經過追蹤每一個用戶的行動,以保證在結帳時每件商品都物有其主。 java

購物車的功能包括如下幾項:
一、把商品添加到購物車,即訂購
二、刪除購物車中已定購的商品
三、修改購物車中某一本圖書的訂購數量
四、清空購物車
五、顯示購物車中商品清單及數量、價格 數據庫

實現購物車的關鍵在於服務器識別每個用戶並維持與他們的聯繫。可是HTTP協議是一種「無狀態(Stateless)」的協議,於是服務器不能記住是誰在購買商品,當把商品加入購物車時,服務器也不知道購物車裏原先有些什麼,使得用戶在不一樣頁面間跳轉時購物車沒法「隨身攜帶」,這都給購物車的實現形成了必定的困難。 瀏覽器

目前購物車的實現主要是經過cookie、session或結合數據庫的方式。下面分析一下它們的機制及做用。 安全

1、cookie
cookie是由服務器產生,存儲在客戶端的一段信息。它定義了一種Web服務器在客戶端存儲和返回信息的機制,cookie文件它包含域、路徑、生存期、和由服務器設置的變量值等內容。當用戶之後訪問同一個Web服務器時,瀏覽器會把cookie原樣發送給服務器。經過讓服務器讀取原先保存到客戶端的信息,網站可以爲瀏覽者提供一系列的方便,例如在線交易過程當中標識用戶身份、安全要求不高的場合避免用戶重複輸入名字和密碼、門戶網站的主頁定製、有針對性地投放廣告等等。利用cookie的特性,大大擴展了WEB應用程序的功能,不只能夠創建服務器與客戶機的聯繫,由於cookie能夠由服務器定製,所以還能夠將購物信息生成cookie值存放在客戶端,從而實現購物車的功能。 服務器

用基於cookie的方式實現服務器與瀏覽器之間的會話或購物車,有如下特色:
一、cookie存儲在客戶端,且佔用不多的資源,瀏覽器容許存放300個cookie,每一個cookie的大小爲4KB,足以知足購物車的要求,同時也減輕了服務器的負荷;
二、cookie爲瀏覽器所內置,使用方便。即便用戶不當心關閉了瀏覽器窗口,只要在cookie定義的有效期內,購物車中的信息也不會丟失;
三、cookie不是可執行文件,因此不會以任何方式執行,所以也不會帶來病毒或攻擊用戶的系統;
四、基於cookie的購物車要求用戶瀏覽器必須支持並設置爲啓用cookie,不然購物車則失效;
五、存在着關於cookie侵犯訪問者隱私權的爭論,所以有些用戶會禁止本機的cookie功能。 cookie

2、session
session是實現購物車的另外一種方法。session提供了能夠保存和跟蹤用戶的狀態信息的功能,使當前用戶在session中定義的變量和對象能在頁面之間共享,可是不能爲應用中其餘用戶所訪問,它與cookie最重大的區別是,session將用戶在會話期間的私有信息存儲在服務器端,提升了安全性。在服務器生成session後,客戶端會生成一個sessionid識別號保存在客戶端,以保持和服務器的同步。這個sessionid是隻讀的,若是客戶端禁止cookie功能,session會經過在URL中附加參數,或隱含在表單中提交等其餘方式在頁面間傳送。所以利用session實施對用戶的管理則更爲安全、有效。 網絡

一樣,利用session也能實現購物車,這種方式的特色是:
一、session用新的機制保持與客戶端的同步,不依賴於客戶端設置;
二、與cookie相比,session是存儲在服務器端的信息,所以顯得更爲安全,所以可將身份標示,購物等信息存儲在session中;
三、session會佔用服務器資源,加大服務器端的負載,尤爲當併發用戶不少時,會生成大量的session,影響服務器的性能;
四、由於session存儲的信息更敏感,並且是以文件形式保存在服務器中,所以仍然存在着安全隱患。 session

3、結合數據庫的方式
這也是目前較廣泛的模式,在這種方式中,數據庫承擔着存儲購物信息的做用,session或cookie則用來跟蹤用戶。這種方式具備如下特色:
一、數據庫與cookie分別負責記錄數據和維持會話,能發揮各自的優點,使安全性和服務器性能都獲得了提升;
二、每個購物的行爲,都要直接創建與數據庫的鏈接,直至對錶的操做完成後,鏈接才釋放。當併發用戶不少時,會影響數據庫的性能,所以,這對數據庫的性能提出了更高的要求;
三、使cookie維持會話有賴客戶端的支持。 併發

各類方式的選擇:
雖然cookie可用來實現購物車,但必須得到瀏覽器的支持,再加上它是存儲在客戶端的信息,極易被獲取,因此這也限制了它存儲更多,更重要的信息。因此通常cookie只用來維持與服務器的會話,例如國內最大的當當網絡書店就是用cookie保持與客戶的聯繫,可是這種方式最大的缺點是若是客戶端不支持cookie就會使購物車失效。 less

Session能很好地與交易雙方保持會話,能夠忽視客戶端的設置。在購物車技術中獲得了普遍的應用。但session的文件屬性使其仍然留有安全隱患。

結合數據庫的方式雖然在必定程度上解決了上述的問題,但從上面的例子能夠看出:在這種購物流程中涉及到對數據庫表的頻繁操做,尤爲是用戶每選購一次商品,都要與數據庫進行鏈接,當用戶不少的時候就加大了服務器與數據庫的負荷。

相關文章
相關標籤/搜索