日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php框架 > 框架設(shè)計 > 購物車功能的優(yōu)化完善

購物車功能的優(yōu)化完善

來源:程序員人生   發(fā)布時間:2016-12-02 09:28:10 閱讀次數(shù):5621次

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

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

2.用seeesion實現(xiàn)購物車;

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

3.用cookie和數(shù)據(jù)庫(購物車信息持久化)實現(xiàn)購物車;

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

注:用戶登錄后的數(shù)據(jù)都是和數(shù)據(jù)庫打交道。

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

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

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

這個結(jié)構(gòu)存在的問題:

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

解決問題:

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

這里寫圖片描述

當(dāng)用戶對商品添加、刪除的時候,只需要通過cart_key獲得id,操作id;更新商品時,通過id獲得到j(luò)son格式數(shù)據(jù)對其進行更新操作。



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

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

這里寫圖片描述

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

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

hset() :hash結(jié)構(gòu)的設(shè)置值
這里寫圖片描述
hdel() :hash結(jié)構(gòu)的刪除數(shù)據(jù)
這里寫圖片描述

hgetAll():hash結(jié)構(gòu)的查詢所有數(shù)據(jù)
這里寫圖片描述


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


顯示購物車數(shù)據(jù):

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

這里寫圖片描述


頁面展現(xiàn):

這里寫圖片描述

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

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

redis中的數(shù)據(jù)查詢:
這里寫圖片描述

頁面結(jié)果:
這里寫圖片描述


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

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

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

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

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

這里寫圖片描述

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: www.久| 精品久久久一区二区 | 国产在线观看 | 国内av网站 | 女人一区二区三区 | 91麻豆精品一区二区三区 | 国产精品久久九九 | 在线观看麻豆视频 | 亚洲色图色小说 | 日韩欧美在线一区二区 | 美女一级黄色毛片 | 狠狠操狠狠干 | 国产精品久久久久久模特 | 欧美爱爱网 | 成人免费激情视频 | 午夜精品一区二区三区视频免费看 | 欧美一级片 | 国产一区二区三区久久 | 精品国产99久久久久久宅男i | 欧美午夜一区二区三区免费大片 | 视频在线日韩 | 欧美久久一区二区 | 久久久久国产一区二区三区 | 国产 欧美 日韩 一区 | 看全色黄大色黄女片爽在线看 | av片在线看| 爱爱视频在线看 | 国产一二区 | 久久久久久国产精品免费 | 久久精品黄色 | 99久久精品国产一区二区野战 | 视频在线国产 | 国产成人久久精品一区二区三区 | 亚洲成人一区 | 天天爽夜夜爽夜夜爽精品视频 | 最新国产精品精品视频 | 91精品一区二区三区久久久久久 | 国产日韩一区二区 | 日韩av在线一区二区三区 | 一区二区三区回区在观看免费视频 | 中文字幕不卡在线 |