Cookie
一、Cookie是什么
- Cookie是服务器发送到用户浏览器并保存在本地的一小块数据,会在刘览器下次向同一服务器再发起请求时被携带并发送到服务器上。
- 通常,Cookie用于告知服务端两个请求是否来自同一浏览器,如保持用户的登录状态。Cookie使基于无状态的HTTP协议记录稳定的状态信息成为了可能。Cookie技术产生源于HTTP协议在互联网上的急速发展。
- Cookie曾一度用于客户端数据的存储,因当时并没有其它合适的存储办法而作为唯一的存储手段。但现在随着现代浏览器开始支持各种各样的存储方式,Cookie渐渐被淘汰。由于服务器指定Cookie后,浏览器的每次请求都会携带Cookie数据,会带来额外的性能开销。
二、Cookie的存储
Cookie保存在客户端某个特定的目录下的一个扩展名为“.txt”文本文件中,并且不同站点的Cookie数据保存不同的文件中。
Cookie数据一般都是加密后保存的。
三、Cookie的有效期
Max一Age和Expires标识定义了Cookie的有效期,即Cookie的生命周期。
- 会话期Cookie
会话期Cookie是最简单的Cookie。浏览器关闭之后Cookie会被自动删除,也就是说Cookie仅在会话期内有效。会话期Cookie不需要指定过期时间(Expires)或者有效期(Max-Age )。 - 持久性Cookie
持久性Cookie可以指定一个特定的过期时间(Expires )或有效期(Max-Age )。
四、Cookie的应用
Cookie主要用于以下三个方面:
- 会话状态管理(如用户登录状态、购物车、游戏分数或其它需要记录的信息)
- 个性化设置(如用户自定义设置、主题等)
- 浏览器行为跟踪(如跟踪分析用户行为等)
五、访问与更新Cookie
1.创建Cookie
**JavaScript可以使用document.cookie属性来访问和更新Cookie。**语法结构如下所示:
document.cookie= newCookie;
newCookie是一个键值对形式的字符串。需要注意的是,用这个方法一次只能对一个cookie进行设置或更新。
document.cookie= "name=wolongxueyuan";
document.cookie = "someCookieName=true; expires=Fri, 31 bec 9999 23:59:59 GMT; path=";
2.修改Cookie
**JavaScript可以使用document.cookie属性来修改Cookie。**语法结构如下所示:
document.cookie = newCookie;
newCookie是一个键值对形式的字符串。需要注意的是,用这个方法一次只能对一个cookie进行设
置或更新。
document.cookie= "name=wolongxueyuan";
document.cookie = "someCookieName=true; expires=Fri,31 Dec 999923:59:59 GMT; path=/";
3.读取Cookie
**JavaScript可以使用documentcookie属性来访问和更新Cookie。**语法结构如下所示:
allCookies = document.cookie;
allCookies被赋值为一个字符串,该字符串包含所有的Cookie,每条cookie以分号分隔(即key=value键值对)。
var cookies = document.cookie;
console.log( cookies );//多个Cookie用";"分割
xararr = cookies.split(;');
for(xar.i=o; i<arr.length; i++){
var cookie = arr[i;//键值对用=分割
var cookiePair = cookie.split('=');
console.log(cookiePair[o]+'='+ cookiepair[1]);
4.删除Cookie
JavaScript删除Cookie只需要设置Expires标识为以前的时间即可。如下所示:
document.cookie = "username=; expires=Thu,01 Jan 1970 o0:00:00 GMT";
需要注意的是,当删除时不必指定Cookie的值。
六、缓存的类型
1.私有缓存
私有缓存只能用于单独用户。浏览器缓存拥有用户通过HTTP下载的所有文档。这些缓存为浏览过的文档提供向后/向前导航、保存网页、查看源码等功能,可以避免再次向服务器发起多余的请求。它同样可以提供缓存内容的离线测览。
Cache-Control: private
2.共享缓存
共享缓存可以被多个用户使用。例如,ISP或所在的公司可能会架设一个web代理来作为本地网络基础的一部分提供给用户。这样热门的资源就会被重复使用,减少网络拥堵与延迟。
Cache-Control: public
以被多个用户使用**。例如,ISP或所在的公司可能会架设一个web代理来作为本地网络基础的一部分提供给用户。这样热门的资源就会被重复使用,减少网络拥堵与延迟。
Cache-Control: public