cookie的優(yōu)化與購物車實(shí)例
一 Cookie 的優(yōu)化
1.1 一般而言,我們?cè)O(shè)置cookie是在php中設(shè)置
例如:
<?php
setcookie('testKey1','hello world',0,'/'); //# 當(dāng) expires = 0 時(shí),此Cookie隨瀏覽器關(guān)閉而失效,?>
而在驗(yàn)證的時(shí)候,我們通常是:
<?php if(isset($_COOKIE['testKey2'])) echo "The New COOKIE is : testKey2 = ".$_COOKIE['testKey2']; else echo "The new COOKIE is setting failed"; ?>
都是在服務(wù)端進(jìn)行。優(yōu)化:
1.2 在前端頁面進(jìn)行驗(yàn)證cookie
cookie保存在客戶端,那么可以在客戶端那邊進(jìn)行驗(yàn)證,根據(jù)上面的代碼,前端獲取代碼為:
<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");
};
那么我們能否在前端設(shè)置cookie 呢 ?
1.3 在前端頁面設(shè)置cookie【購物車原理】
function setCookie(){
var expire = new Date();
expire.setTime(expire.getTime() + 86400000);
document.cookie = "testKey2=This the second Cookie;expires=" + expire.toGMTString() + ";path=/";
alert('完成設(shè)置');
location.href='test2.php'
}
這樣子能夠減輕服務(wù)器的壓力
我們要注意,這樣子是有限制的,瀏覽器本身能夠存儲(chǔ)的數(shù)據(jù)有限:

上述是從網(wǎng)上找來,僅供參考,如果我們要存儲(chǔ)更多的數(shù)據(jù)。可以使用:
1.4 local storage
在谷歌瀏覽器下,f12可以看到:

這個(gè)可以看成是瀏覽器的小型數(shù)據(jù)庫,可以存儲(chǔ)更多的數(shù)據(jù)。
示例【購物車小試】:
設(shè)置頁面:
<!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('參數(shù)錯(cuò)誤!');
return false;
}
}catch(e){alert('參數(shù)錯(cuò)誤!');return false}
var gName=gdsInfo[1];
gdsInfo[1]=encodeURI(gdsInfo[1]);
gdsInfo[4]=parseInt(gdsInfo[4]);
if(isNaN(gdsInfo[4])) gdsInfo[4] = 1;
//由JSON字符串轉(zhuǎn)換為JSON對(duì)象
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對(duì)象轉(zhuǎn)化為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" >存儲(chǔ)一</a><br />
</body>
</html>
效果:

有設(shè)置,就有查看:
<!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" >顯示詳細(xì)</a><br />
<a href="javascript:clearLS();" rel="external nofollow" >清空</a><br />
<a href="./" rel="external nofollow" >返回設(shè)置頁面</a><br />
<div id="show"></div>
</body>
</html>
效果:
以字符串形式顯示

顯示詳細(xì)

以上這篇cookie的優(yōu)化與購物車實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
PHP receiveMail實(shí)現(xiàn)收郵件功能
這篇文章主要為大家詳細(xì)介紹了PHP receiveMail實(shí)現(xiàn)收郵件功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
基于PHP實(shí)現(xiàn)商品成交時(shí)發(fā)送短信功能
這篇文章主要介紹了基于PHP實(shí)現(xiàn)商品成交時(shí)發(fā)送短信的功能,代碼簡(jiǎn)單易懂,需要的朋友可以參考下2016-05-05
顯示程序執(zhí)行時(shí)間php函數(shù)代碼
這篇文章介紹了顯示程序執(zhí)行時(shí)間php函數(shù)代碼,有需要的朋友可以參考一下2013-08-08
windows7下php開發(fā)環(huán)境搭建圖文教程
這篇文章主要介紹了windows7下php開發(fā)環(huán)境搭建的圖文教程,非常的詳盡,有需要的小伙伴快來參考下吧。2015-01-01
PHP SPL標(biāo)準(zhǔn)庫之SplFixedArray使用實(shí)例
這篇文章主要介紹了PHP SPL標(biāo)準(zhǔn)庫之SplFixedArray使用實(shí)例,SplFixedArray主要是處理數(shù)組相關(guān)的主要功能,它是固定長(zhǎng)度的,比普通的數(shù)組處理更快,需要的朋友可以參考下2015-05-05
php array_walk 對(duì)數(shù)組中的每個(gè)元素應(yīng)用用戶自定義函數(shù)詳解
php array_walk函數(shù)將用戶自定義函數(shù)應(yīng)用到 array 數(shù)組中的每個(gè)單元,即使用用戶自定義函數(shù)對(duì)數(shù)組中的每個(gè)元素做回調(diào)處理。 本文章向大家講解array_walk函數(shù)的基本語法及使用實(shí)例,需要的朋友可以參考下2016-11-11

