第一种方式:cookie的优化与购物车实例

第一种方式:cookie的优化与购物车实例

一 Cookie 的优化

1.1 一般而言,我们设置cookie是在php中设置

例如:

<?php
setcookie('testKey1','hello world',0,'/'); 
//# 当 expires = 0 时,此Cookie随浏览器关闭而失效,
?>

而在验证的时候,我们通常是:

<?php
if(isset($_COOKIE['testKey2']))
  echo "The New COOKIE is : testKey2 = ".$_COOKIE['testKey2'];
else
  echo "The new COOKIE is setting failed";
?>

都是在服务端进行。优化:

1.2 在前端页面进行验证cookie

cookie保存在客户端,那么可以在客户端那边进行验证,根据上面的代码,前端获取代码为:

<script language="JavaScript" type="text/javascript">
var key1 = document.cookie.match(new RegExp("(^| )testKey1=([^;]*)(;|$)")); //正则找出testKey的cookie值
try{
  if(key1[2] != '')
    document.write("testKey1 = "+key1[2]);
}catch(e){
  document.write("testKey1 = NULL");
};

那么我们能否在前端设置cookie 呢 ?

1.3 在前端页面设置cookie【购物车原理】

function setCookie(){
  var expire = new Date(); 
  expire.setTime(expire.getTime() + 86400000);
  document.cookie = "testKey2=This the second Cookie;expires=" + expire.toGMTString() + ";path=/";
  alert('完成设置');
  location.href='test2.php'
}

这样子能够减轻服务器的压力

我们要注意,这样子是有限制的,浏览器本身能够存储的数据有限:

第一种方式:cookie的优化与购物车实例

 

1.4 local storage

在谷歌浏览器下,f12可以看到:

第一种方式:cookie的优化与购物车实例

这个可以看成是浏览器的小型数据库,可以存储更多的数据。

 

示例【购物车小试】:

设置页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Demo2</title>
<script language="JavaScript" type="text/javascript">
var cartLSName = 'abc';
//gdsInfo=[ID,NAME,AVATAR,PRICE,NUMBER]
function addToLS(gdsInfo){
  if(!window.localStorage){
    alert('您的浏览器不支持Local Storage!'); //如果不支持,可以采用第1.3中的方法
    return false;
  }
  try{
    if(gdsInfo.length != 5){
      alert('参数错误!');
      return false;
    }
  }catch(e){alert('参数错误!');return false}
  var gName=gdsInfo[1];
  gdsInfo[1]=encodeURI(gdsInfo[1]);
  gdsInfo[4]=parseInt(gdsInfo[4]);
  if(isNaN(gdsInfo[4])) gdsInfo[4] = 1;
  //由JSON字符串转换为JSON对象
  var cartLS = JSON.parse(localStorage.getItem(cartLSName));
  if(cartLS == null){
    cartLS=[gdsInfo];
  }else{
    var existInCart=false;
    for(var i=0;i<cartLS.length;i++){
      if(cartLS[i][0] == gdsInfo[0]){
        cartLS[i][4] += gdsInfo[4];
        existInCart = true;
        break;
      }
    }
    if(!existInCart)
      cartLS.splice(0,0,gdsInfo);
  }
  //将JSON对象转化为JSON字符,并存入LocalStorage
  localStorage.setItem(cartLSName,JSON.stringify(cartLS));
  return true;
}
</script>
</head>
<body>
<a href="javascript:addToLS([3,'华为Mate8','ico.jpg',3888.00,2]);" rel="external nofollow" >存储一</a><br />
</body>
</html>

效果:

第一种方式:cookie的优化与购物车实例

 

有设置,就有查看:

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Show LocalStorage Info</title>
<script language="JavaScript" type="text/javascript">
if(!window.localStorage){
  alert('您的浏览器不支持Local Storage!');
}
var cartLSName = 'abc';
var cartStr = localStorage.getItem(cartLSName)
//gdsInfo=[ID,NAME,AVATAR,PRICE,NUMBER]
function showStr(){
  str = decodeURIComponent(cartStr);
  alert(str);
  document.getElementById('show').innerHTML=str;
}
function showInfo(){
  var cartLS = JSON.parse(cartStr);
  if(cartLS == null){
    alert(NULL);
  }else{
    var str = '';
    for(var i=0;i<cartLS.length;i++){
      str += "ID:"+cartLS[i][0] + "\n";
      str += "Name:"+cartLS[i][1] + "\n";
      str += "Logo:"+cartLS[i][2] + "\n";
      str += "Price:"+cartLS[i][3] + "\n";
      str += "Num:"+cartLS[i][4] + "\n";
    }
    str = decodeURIComponent(str);
    alert(str);
    document.getElementById('show').innerHTML=str.replace(/\n/g,"<br />");
  }
}
function clearLS(){
  localStorage.clear();
}
</script>
</head>
<body>
<a href="javascript:showStr();" rel="external nofollow" >以字符串形式显示</a><br />
<a href="javascript:showInfo();" rel="external nofollow" >显示详细</a><br />
<a href="javascript:clearLS();" rel="external nofollow" >清空</a><br />
<a href="./" rel="external nofollow" >返回设置页面</a><br />
<div id="show"></div>
</body>
</html>

 

效果

以字符串形式显示

 

第一种方式:cookie的优化与购物车实例

 

显示详细

 

 

第一种方式:cookie的优化与购物车实例

 

以上这篇cookie的优化与购物车实例就是小编分享给大家的全部内容了,希望能给大家一个参考

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113259.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 搭建SpringCloud项目,并实现自动化部署[通俗易懂]

    搭建SpringCloud项目,并实现自动化部署[通俗易懂]前一阵子一直在忙着做项目,最近有空,把项目中用到的SpringBoot微服务相关架构再梳理一遍。项目资源:https://github.com/sunroyi/SpringCloud主要分为以下几步:(1)搭建SpringBootService,这里是各个微服务的业务逻辑。(这里搭建了2个Service,用来测试熔断)(2)搭建SpringBootEureka,用来发现服务。(…

    2022年5月27日
  • UIAutomator2的使用教程

    UIAutomator2的使用教程uiautomator2是一个python库,用于Android的UI自动化测试,其底层基于Googleuiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作。

    2022年7月21日
  • day2 购物商城

    day2 购物商城

    2022年3月3日
  • vue文件上传功能_vue如何自定义组件

    vue文件上传功能_vue如何自定义组件vue的文件上传组件upload,拥有支持多种格式文件上传,单文件多文件等都支持,许多项目现在都少不了文件上传功能,但是vue的upload组件如果直接引用,肯定也有一些不方便之处,有的时候需要传参数,需要手动触发上传方法,而不是选择了文件就上传,所以结合我项目实例,写一vue自定义文件上传的实现,包括前端和后台的处理以及参数的接收。一、先认识一下vue的upload组件,官网链接ht…

    2022年8月15日
  • win10启动文件丢失或损坏如何解决_miflash出现灾难性故障

    win10启动文件丢失或损坏如何解决_miflash出现灾难性故障原本昨天一切正确的电脑,今天打开电脑想新建一个文件夹的时候,竟无法成功,提示【一个意外错误使你无法创建该文件夹。如果你继续受到此错误,可以使用错误代码来搜索有关此问题的帮助。错误0x8000FFFF:灾难性故障】。小编真的是无奈啊,还能怎么办,上网搜索呗,出现的这个问题的磁盘还是之前的机械硬盘,以为已经把磁盘重新格盘,删除分区,重建分区,应该是没有问题了把,结果出现了几次问题都在这个机械硬盘里…

    2022年9月24日
  • linux卸载软件包命令rpm_为linux卸载一个软件包应使用

    linux卸载软件包命令rpm_为linux卸载一个软件包应使用例如卸载mysql:这样就完成了rpm安装程序的卸载。

    2022年9月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号