Cookie
1.服务器通过Set-Cookie给客户端一串字符串
2.客户端每次访问相同域名的网页时,必须带上这段字符串
3.客户端要在一段时间内保存这个Cookie
如何设置Cookie时间和删除时间
服务器端设置 Cookie 过期时间:response.setHeader('Set-Cookie','cookie-name=cookie-value;Max-Age=1000')
服务器端删除 Cookie:Set-Cookie: token=deleted; path=/; expires=Thu, 01 Jan 1970 00:00:00 GMT
用户端删除 Cookie :在浏览器的开发者工具(F12) -> Application -> Cookies 里删除某个网站的 Cookie。
在浏览器(Chrome)的设置 -> 清除浏览数据 -> 勾选 Cookie 和其他网站数据 清除 Cookie
<script type="text/javascript">
//cname 名字
//cvalue 值
//exdays 时间 0.01大概25分钟
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
var expires = "expires=" + d.toUTCString();
document.cookie = cname + "=" + cvalue + "; " + expires+"; path=/" 这个很重要代表在那个层级下可以访问cookie
console.log(d)
}
//获取cookie
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while(c.charAt(0) == ' ') c = c.substring(1);
if(c.indexOf(name) != -1) return c.substring(name.length, c.length);
}
return "";
}
//删除 cookie
function clearCookie(name) {
setCookie(name, "", -1);
}
</script>
Session
1.将SessionID(随机数)通过Cookie发送给客户端
2.客户端访问服务器时,服务器读取SessionID
3.服务器有一块内存(哈希表)保存了所有session
4.通过SessionID我们可以得到对应用户隐私信息,如id,email
5.这块内存(哈希表)就是服务器上的所有session
LocalStorage:(实质是哈希)
1.LocalStorage跟HTTP无关
2.HTTP不会带上LocalStorage的值
3.只有相同域名时的页面才能相互读取LocalStorage(没有同源那么严格)
4.每个域名localStorage最大存储量为5Mb左右(每个浏览器不一样)
5.常用场景:记录有没有提示过用户(没有用的信息,不能记录密码)
6.LocalStorage永久有效,除非用户清理缓存
SessionStorage
1,2,3,4同上
5.SessionStorage在用户关闭页面(Session结束)后就失效
image.png
HTTP缓存:Cache-Control:Web性能优化
如何进行web性能优化:在相应的向服务器请求的文件设置其头部为response.setHeader('Cache-Control','max-age = 30')
首页为啥无法设置缓存
Expires和Cache-Control的区别:
Expires设置的本地时间日期,Cache-Controlz设置的是时间的长久就过期。
ETag会请求,但不响应。
网友评论