购物车对于电商网站来说是一个非常重要的模块。最近自己的项目中也用到了,所以拿出来说说事!

购物车是用户选择商品的一个缓存的地方。其中包含了商品的基本信息,例如:商品的描述,商品的价格,商品的数量等等。

对于这个缓存而言,实现的方式是有很多种的,当然也是各有优劣,简单说一下:

1.session:对话的时效性的问题,如果客户选购商品的途中浏览器突然关闭,服务端找不到cookie中的sessionid了,那么选购的商品就不存在了

2.cookie:只要添加了就一直存在,只要不是手动的去清除或者expires为默认的过期时间。但是安全性无法保证,而且也无法对客户的喜好进行定量的分析,有个数和长度的限制。

3.直接入数据库:添加商品就反复的读写数据库,硬件要求高,影响性能。数据持久存在

4.缓存数据库:先暂存进入类似redis的缓存数据库中,登录后再写入数据库,但是对硬件有要求

再反观各大电商网站,基本上分为三个流程:

一.例如淘宝,你浏览商品是可以的。但是如果你要添加商品到购物车的话就需要登录;

二.例如京东,无论是未登录还是登录的用户都可以使用将需要的商品添加入购物车内;

三.例如苏宁,添加购物车只显示商品个数,并不显示相关的商品信息,这里就不做讨论了。

如此看来,推 测淘宝的业务逻辑是比京东的要简单的。因为登录了话这些数据肯定就要入库了,淘宝财大气粗,技术精湛,数据全部入库对于淘宝来说也不是什么很大的问题。而 且这些用户的浏览数据还可以方便淘宝进行大数据的分析,对用户进行商品的推送,乃至于若干年后给你来一个这十年喜爱商品的统计等等。而且只要你加了,除非 你自己去删,要不然就等着你花钱来买!你怕不怕

具体怎么使用或者是结合使用就要看具体的场景和需求了,我们是选择了使用cookie作为购物车商品缓存的介质。

浅谈购物车中cookie的使用的更多相关文章

  1. 浅谈JS中的!=、== 、!==、===的用法和区别 JS中Null与Undefined的区别 读取XML文件 获取路径的方式 C#中Cookie,Session,Application的用法与区别? c#反射 抽象工厂

    浅谈JS中的!=.== .!==.===的用法和区别   var num = 1;     var str = '1';     var test = 1;     test == num  //tr ...

  2. 浅谈HTTP中GET、POST用法以及它们的区别

    浅谈HTTP中GET.POST用法以及它们的区别 HTTP定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE.URL全称是资源描述符.我们可以这样认为: 一 ...

  3. 浅谈Java中的equals和==(转)

    浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new String("hello"); 2 String str ...

  4. 浅谈Linux中的信号处理机制(二)

    首先谢谢 @小尧弟 这位朋友对我昨天夜里写的一篇<浅谈Linux中的信号处理机制(一)>的指正,之前的题目我用的“浅析”一词,给人一种要剖析内核的感觉.本人自知功力不够,尚且不能对着Lin ...

  5. 浅谈Java中的对象和引用

    浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起 ...

  6. 浅谈Java中的equals和==

    浅谈Java中的equals和== 在初学Java时,可能会经常碰到下面的代码: String str1 = new String("hello"); String str2 = ...

  7. 转【】浅谈sql中的in与not in,exists与not exists的区别_

    浅谈sql中的in与not in,exists与not exists的区别   1.in和exists in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表 ...

  8. 浅谈iOS中的userAgent

    浅谈iOS中的userAgent   User-Agent(用户代理)字符串是Web浏览器用于声明自身型号版本并随HTTP请求发送给Web服务器的字符串,在Web服务器上可以获取到该字符串. 在公司产 ...

  9. 浅谈JavaScript中的闭包

    浅谈JavaScript中的闭包 在JavaScript中,闭包是指这样一个函数:它有权访问另一个函数作用域中的变量. 创建一个闭包的常用的方式:在一个函数内部创建另一个函数. 比如: functio ...

随机推荐

  1. Junit初体验

    JUnit是一个开源的Java单元测试框架,由 Erich Gamma 和 Kent Beck 开发完成. 主要是为了方便开发人员在自己开发的过程中能够及时的发现和解决bug用的,一方面自己可以通过单 ...

  2. Android开发艺术探索(一)——Activity的生命周期和启动模式

    Activity的生命周期和启动模式 生命周期有? 1.典型情况下的生命周期—>指有用户参与的情况下,Activity所经过的生命周期改变 2.异常情况下的生命周期—>指Activity被 ...

  3. JavaScript实现遮罩层

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. ueditor编辑器图片自定义存放目录及路径修改

    百度编辑器ueditor功能强大,很多人士以应用项目开发中,但是里面有一个公众的问题就是上传图片存放目录太深,默认是ueditor/php/upload下,前不久测试后图片存放目录可以改变,但是路径会 ...

  5. 【转】Cannot change version of project facet Dynamic Web Module to 3.1 (Eclipse Maven唯一解决方案)

    If you want to use version 3.1 you need to use the following schema: http://xmlns.jcp.org/xml/ns/jav ...

  6. 【转】Android Studio 的小小配置

    这篇博文的内容列表: 1.编辑器的字体设置 2.预览XML布局 3.导入项目  4.显示行号  5.新建Java类和Component的子类 额~~程序猿一般话都不多,嘿嘿,那咱就直接图文吧~ ^_^ ...

  7. spring 整合JDBC

    使用Spring提供的三个JDBC模板类(JdbcTemplate.NamedParameterJdbcTemplate.SimpleJdbcTemplate)操作数据库 一.JdbcTemplate ...

  8. Maven tomcat插件配置和使用

    pom.xml组态 <build>   <plugins>         <plugin>                  <groupId>org ...

  9. HTTP的报文格式,GET和POST的区别

    1.HTTP报文格式 HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. 请求报文: 一个HTTP请求报文由请求行( ...

  10. centos 6.6编译安装nginx--来自阿里云帮助文档

    刚开始接触运维工作, 需要安装nginx,就在网上找了各种的方法, 结果都是大家抄来抄去,都不好用. 由于公司用的是阿里云的服务器, 所以在阿里云上找到了安装nginx的方法,现在摘抄下来,供大家借鉴 ...