多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > 框架設計 > 購物車功能的優化完善

購物車功能的優化完善

來源:程序員人生   發布時間:2016-12-02 09:28:10 閱讀次數:5606次

購物車的功能實現,通常來講有3種方法。
1.用cookie實現購物車;

【缺點】: 單純有cookie實現購物車,這樣的購物車不是很理想,假想1下,如果客戶真個閱讀器把cookie給禁用了, 這類方法就會在這里掛掉。

2.用seeesion實現購物車;

【缺點】: session中保存購物車的信息,這個只是在1個會話中可用,如果用戶沒有登錄,或說登錄了以后,添加購物車,在關閉閱讀器 或登出后,之前所添加的購物車就只有掛掉了。

3.用cookie和數據庫(購物車信息持久化)實現購物車;

主要的流程:
A.用戶登錄前的數據流:用戶在沒有登錄系統的時候,對喜歡的商品進行添加購物車,那末這個時候,我們可以把購物車信息保存到cookie中,這里會觸及到cookie的添加,修改操作;也即如果之前在cookie中不存對應的cookie,則就對cookie進行添加操作。如果在cookie中存在對應的cookie,那末,這時候候,就要對cookie進行修改操作了(這里觸及到用戶對同1個商品進行屢次添加購物車的情況)。
B.用戶登錄后的數據流:用戶在登錄后,系統首先做的第1件事就是去獲得對應的cookies,如果存在相干的購物車cookies,那末就對該購物車信息進行相利用戶User的持久化操作,要末添加,要末修改。(添加操作:該用戶所對應的購物車如果沒有相應的信息進行添加操作;修改操作:類似的,如果存在對利用戶的購物車信息,就進行修改操作)。用戶登錄后,也能夠進行購物車的添加操作,不過,這里不是添加到cookie中,而是直接持久化到數據庫中。

注:用戶登錄后的數據都是和數據庫打交道。

完善購物車功能:
這里寫圖片描述

1. cookie中的購物車數據格式改造 直接將購物車數據保存到cookie中的問題: a)閱讀器對cookie的大小限制,不能攜帶太多商品信息,不能滿足用戶需求 b ) 如果cookie中內容太多,http要求會攜帶cookie信息,影響要求的效力

改造:
之前cookie中的數據格式為json數據:
這里寫圖片描述

這個結構存在的問題:

1. a)商品的屬性太多,只保存itemId,itemTitle等信息可以通過接口查詢 b)從業務上理解,保存商品加入購物車時快照信息 c)由產品經理決定,將商品加入到購物車時是不是要保存快照信息? 2. 對商品的新增、刪除、修改數量,每次都要將數據反序列化成List集合, 然后對集合遍歷找出Cart對象,再做修改

解決問題:

1、 不能保存到cookie a) 保存到redis i. 性能高 ii. redis和cookie都有生存時間
2、 改造數據存儲格式
a) 使用redis中的hash結構

這里寫圖片描述

當用戶對商品添加、刪除的時候,只需要通過cart_key獲得id,操作id;更新商品時,通過id獲得到json格式數據對其進行更新操作。



在商品詳情頁,加入購物車時的要求路徑所對應的方法改造:
這里寫圖片描述
這里寫圖片描述

重點是改造cookie中的value,以下圖

這里寫圖片描述

對應的邏輯,這是原始的,直接向cookie中寫入商品詳情:
這里寫圖片描述
目前,我們是將商品信息保存在cookie中的。
重構以后使用redis的Hash結構
修改未登錄情況下的,信息保存:
這里寫圖片描述

RedisService 的 hget()方法,改造:
這里寫圖片描述

hset() :hash結構的設置值
這里寫圖片描述
hdel() :hash結構的刪除數據
這里寫圖片描述

hgetAll():hash結構的查詢所有數據
這里寫圖片描述


添加商品到購物車的代碼重構:
這里寫圖片描述


顯示購物車數據:

private static final Integer SECONDS = 60 * 60 * 24 * 30 (30天)

這里寫圖片描述


頁面展現:

這里寫圖片描述

問題:
Redis中的key保存在客戶端閱讀器的cookie中,用戶可以通過閱讀器清空cookie,那末Redis中的數據就會長時間保存在Redis中。
解決:

根據活躍度(查詢頻率) i. 記錄數據的訪問的最后時間 ii. 根據當前時間和最后時間做比較,如果超過指定時間,則需要刪除 this.redisService.hset(key ,"updated", String.valueOf(system.currentTimeMillis())); iii. 需要編寫Quartz定時任務實現?TODO

redis中的數據查詢:
這里寫圖片描述

頁面結果:
這里寫圖片描述


用戶操作購物車記錄到cookie和redis的實現
1種情況是:1直訪問購物車,處于活躍狀態
這里寫圖片描述

1種情況是:1直訪問網站,但是不訪問購物車,假定訪問商品詳情頁時刷新購物車cookie和redis數據,需要注冊攔截器
這里寫圖片描述

注冊攔截器
這里寫圖片描述

還有1種情況是:人為的將閱讀器的cookie清空

a) 記錄購物車數據的最后訪問時間,后臺任務掃描比對該數據,做數據清算 this.redisService.hset(key ,"updated", String.valueOf(system.currentTimeMillis()));

這里寫圖片描述

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 最新欧美精品一区二区三区不卡 | 欧美第一网站 | 91成人午夜精品福利院在线观看 | 性一交一乱一伦一色一情 | 激情影院网站 | 男女男精品视频 | 欧美超清性videosfree | 中文字幕在线观看网站 | 欧美一级毛片欧美一级成人毛片 | 91久久国产综合精品 | 亚洲视频你懂的 | 亚洲视频在线观看网站 | 欧美性乱| 国内精品伊人久久大香线焦 | 国产精品一级二级三级 | 亚洲人成77777在线播放网站不卡 | 青青青青手机在线视频观看国产 | 国产成人精品自拍 | 国产亚洲精品不卡在线 | 91精品欧美一区二区综合在线 | 国产精品国产三级国产专不∫ | 成年人在线观看免费视频 | 亚洲人成在线精品不卡网 | 91桃色观看免费高清 | 久久天天躁夜夜躁狠狠85台湾 | 亚洲一区影院 | 8av国产精品爽爽ⅴa在线观看 | 国产午夜精品一区二区三区 | 日韩精品一区二区三区中文精品 | 日本乱人伦片中文三区 | 日韩一级片在线免费观看 | 国产婷婷丁香久久综合 | 国产人人爱 | 手机看片国产欧美日韩高清 | 亚洲第一综合网站 | 啦啦啦啦高清视频免费观看 | 一区二区三区在线 | 日本 | 亚洲不卡在线观看 | 女人洗澡一级特黄毛片 | 亚洲国产专区 | 久久久久久国产精品三级 |