oZaoHua 2019-06-28
网景(Netscape)公司在20世纪90年代中期最先在网络中使用了cookie,这些cookie最终变成了我们现在使用的cookie。cookie最初的意图是在于为网络销售商提供一种购物车,让用户可以收集他们想要购买的商品。
使用cookie实现购物车:也就是将整个购物车都存储到cookie里面的做法非常常见,这种做法的一大优点是无须对数据库进行写入就可以实现购物车功能,而缺点则是程序需要重新解析和验证(validata)cookie,确保cookie的格式正确,并且包含的商品都是真正可购买的商品。cookie购物车还有一个缺点:因为浏览器每次发送请求都会连cookie一起发送,所以如果购物车cookie的体积比较大,那么请求发送和处理的速度可能会有所降低。
因为我们在签名已经使用了Redis实现了会话cookie和记录用户最近浏览过的商品这两个特性,所以我们决定将购物车的信息也存储到Redis里面,并且使用与会话cookie相同的cookieID来引用购物车。
购物车的定义非常简单:每个用户的购物车都是一个散列,这个散列存储了商品ID与商品订购数量之间的映射。对商品数量进行验证的工作有web应用程序负责,我们要做的则是在商品的订购数量出现变化时,对购物车进行更新:如果用户订购某件商品的数量大于0,那么程序会将这件商品的ID以及用户订购该商品的数量添加到散列里面,如果用户购买的商品以及存在于散列里面,那么新的订购数量会覆盖已有的订购数量;相反的,如果用户订购某件商品的数量不大于0,那么程序将从散列里面移除该条目。
def add_to_cart(conn,session,item,count): if count<=0: #从购物车里面移除指定商品 conn.hrem('cart:'+session,item) else: #将指定的商品添加到购物车