四者的異同
特性 | Session | Cookie | localStorage | sessionStorage |
---|---|---|---|---|
數據的生命期 | 在一定時間內保存在服務器上。當訪問增多,會比較占用你服務器的性能,考慮到減輕服務器性能方面,應當使用cookie。 | 一般由服務器生成,可設置失效時間,關閉瀏覽器后,cookie數據仍然存在,直到過期時間結束才消失。如果在瀏覽器端生成Cookie,默認是關閉瀏覽器后失效 | 除非被清除,否則永久保存 | 僅在當前會話下有效,關閉頁面或瀏覽器后被清除 |
存放數據大小 | 大小沒有限制 | 4K左右 | 一般為5MB | |
與服務器端通信 | 由服務器端創建,比cookie安全, Session完全依賴於Cookie,所以cookie的缺點同樣是session的缺點 | 每次都會攜帶在HTTP頭中,如果使用cookie保存過多數據會帶來性能問題 | 僅在客戶端(即瀏覽器)中保存,不參與和服務器的通信 |
localStorage和sessionStorage操作
localStorage和sessionStorage都具有相同的操作方法,例如setItem、getItem和removeItem等
localStorage和sessionStorage的方法
setItem存儲value
用途:將value存儲到key字段
sessionStorage.setItem("key", "value");
localStorage.setItem("site", "baidu");
getItem獲取value
用途:獲取指定key本地存儲的值
var value = sessionStorage.getItem("key");
var site = localStorage.getItem("site");
removeItem刪除key
用途:刪除指定key本地存儲的值
sessionStorage.removeItem("key");
localStorage.removeItem("site");
clear清除所有的key/value
用途:清除所有的key/value
sessionStorage.clear();
localStorage.clear();
其他操作方法:點操作和[ ]
web Storage不但可以用自身的setItem,getItem等方便存取,也可以像普通對象一樣用點(.)操作符,及[]的方式進行數據存儲,像如下的代碼:
var storage = window.localStorage;
storage.key1 = "hello";
storage["key2"] = "world";
console.log(storage.key1);
console.log(storage["key2"]);
php中Session和Cookie的使用
session
sesstion_start(); // 首先開啟session
1>創建和更新
$_SESSION['user'] = 'username'; // 添加session 把username存在里面
2>刪除session
// 刪除session值,但保留數據類型 $_session['session鍵值'] = array(); // 刪除cookie中的session_id $session_id = session_name(); setCookie($session_id,"",time()-1); // 釋放當前在內存中已經創建的所有$_SESSION變量,但不刪除session文件以及不釋放對應的session_id session_unset(); // 刪除當前用戶對應的session文件以及釋放session_id,但內存中的$_SESSION變量內容依然保留 session_destroy();
3>獲取session
echo $_SESSION['user']; // 直接輸出 username
cookie
1>創建和更新
setCookie($cookieName,$value,time()+秒數); 實例:setcookie("UserName","cnblogs",time()+2*7*24*3600);
2>刪除Cookie
setcookie($cookieName,value,time()-秒數); //或者 setcookie($cookiename, ''); //或者 setcookie($cookiename, NULL); 實例:setcookie("UserName","cnblogs",time()-3600);
3>獲取cookie
$_COOKIE['UserName'];