购物车实现的几种方式优缺点对比


Posted in PHP onMay 02, 2018

购物车的话目前来说有三种,分别是存储在cookie中或是session中,或是结合 数据库存储

第一种是存储在cookie中

优点:

     1.cookie是存储在客户端的,且占用很少的资源,一般cookie中可以存储300个cookie,每个cookie为4KB,既可以满足购物车的需求,还可以减轻服务器的压力.

   2.cookie是浏览器内置,只要在cookie定义的有效期内,数据都不会丢失.

   3.二区cookie不是可执行文件,所以不会给用户带来病毒或攻击用户系统

缺点:

  1.基于cookie开发的购物车要求用户浏览器必须支持并设置为启用cookie,否则购物车则失效.
  2.存在着关于cookie侵犯访问者隐私的争论,因此有些用户会禁止本机cookie的功能.
   

     3.如果换一台机器在去登录的话,就会丢失购物车信息;

第二种是session

优点:

  1.session可以与客户端保持同步,不依赖与客户端的设置.
  2.与cookie相比,session是存储在服务器端的信息,因此比较安全;

缺点:.

  1.session会占用服务器资源,加大服务器的负载,尤其当并发用户很多时,会生成大量的session,影响服务器的性能.
  2.由于session存储的信息更加敏感,而且是以文件形式保存在服务器中,所以也存在着安全隐患;

 第三种是结合数据库的方式

   这种模式是目前比较普遍的.
 

 它有一下特点

优点:

                    1.数据库与cookie分别负责记录数据和维持回话,能发挥各自的优势,使安全性和服务器性能都得到了提高;
                    2.不论换到哪一个机器上,购物车信息都不丢失;

缺点:

  1.每个购物的行为 ,都要与数据库进行连接,直至对表的操作完成后,连接才释放.当并发用户很多时,会影响数据库的性能 ,这时对数据库的性能提出了更高的要求;
         2.使用cookie维持回话,需要客户端的支持.

PHP 相关文章推荐
php的header和asp中的redirect比较
Oct 09 PHP
如何在PHP中使用Oracle数据库(6)
Oct 09 PHP
解析php中用PHPMailer来发送邮件的示例(126.com的例子)
Jun 24 PHP
PHPAnalysis中文分词类详解
Jun 13 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
thinkphp中ajax与php响应过程详解
Dec 08 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
Feb 16 PHP
WordPress中用于检索模版的相关PHP函数使用解析
Dec 15 PHP
PHP命名空间简单用法示例
Dec 28 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
Sep 02 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 PHP
PHP生成(支持多模板)二维码海报代码
Apr 30 #PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 #PHP
PHP+MySQL高并发加锁事务处理问题解决方法
Apr 30 #PHP
PHP使用file_get_contents发送http请求功能简单示例
Apr 29 #PHP
PHP实现通过strace定位故障原因的方法
Apr 29 #PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 #PHP
PHP使用curl_multi实现并发请求的方法示例
Apr 29 #PHP
You might like
php 异常处理实现代码
2009/03/10 PHP
php-fpm配置详解
2014/02/12 PHP
thinkphp命名空间用法实例详解
2015/12/30 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
在JavaScript中监听IME键盘输入事件
2011/05/29 Javascript
jQuery版仿Path菜单效果
2011/12/15 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
Jquery揭秘系列:ajax原生js实现详解(推荐)
2016/06/08 Javascript
JS简单实现DIV相对于浏览器固定位置不变的方法
2016/06/17 Javascript
JS实现鼠标框选效果完整实例
2016/06/20 Javascript
jQuery可见性过滤选择器用法示例
2016/09/09 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
Jquery-data的三种用法
2017/04/18 jQuery
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
JavaScript代码实现txt文件的上传预览功能
2018/03/27 Javascript
Python实现栈的方法
2015/05/26 Python
利用Python查看目录中的文件示例详解
2017/08/28 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
Python开发之Nginx+uWSGI+virtualenv多项目部署教程
2019/05/13 Python
python的内存管理和垃圾回收机制详解
2019/05/18 Python
对Python 中矩阵或者数组相减的法则详解
2019/08/26 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
pytorch 实现在一个优化器中设置多个网络参数的例子
2020/02/20 Python
设置jupyter中DataFrame的显示限制方式
2020/04/12 Python
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
法国房车租赁网站:Yescapa
2019/08/26 全球购物
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
《梅兰芳学艺》教学反思
2014/02/24 职场文书
幼儿园秋游感想
2014/03/12 职场文书
我是一名护士演讲稿
2014/08/28 职场文书
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL
未发现nvidia显卡怎么办?Win11系统中未检测到nvidia显卡解决教程
2022/04/08 数码科技
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android