欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

js操作cookie

程序员文章站 2024-01-20 19:49:52
...

js操作cookie

introduce

本地存储有三种方式吧,cookie、localstorage、sessionstorage

随便扯扯

  • cookie是网站为了标识用户身份而存储在用户本地终端上的数据,通常是加密的。是由服务器生成的。
  • cookie的数据始终在同源的http请求中携带,即使不需要,也就是说他们会在浏览器和服务器之间来回传递
  • localstorage和sessionstorage仅仅在本地保存,不会发给服务器
  • cookie的大小是4kb,sessionStorage和loaclStorage虽然也有大小限制,但是他们比cookie要大得多,可以达到5m
  • localStorage可以永久保存数据,浏览器关闭之后不会丢失的,除非主动删除
  • sessionStroage 数据在当前浏览器窗口关闭之后自动删除
  • cookie 设置的cookie过期时间之前一直有效,即使窗口或者浏览器关闭
  • http-only属性标识一个客户端jas能否操作改cookie
  • max-age属性表示缓存时间,单位为秒,domain设置可以访问该cookie的域名
  • cookie的优化方案有
  • 去除没有必要的cookie,如果页面不需要cookie就完全禁用
  • 将cookie的大小减少到最小,由于cookie在访问对应于明霞的资源时候都会通过http请求发送到服务器,所以减少cookie的代销,可以减少http请求报文的大小,提高相应速度。
  • 设置合适的过期时间,较长的过期时间可以提高访问速度。
  • 通过不同的domain来减少cookie的使用,在访问js,css和图片是,大多数cookie是多余的,可以使用不同的domain来存储这些静态资源,这样访问这些资源时就不会发送多余的cookie,从而提高响应速度举个例子来说,我们的主网站是 w w w . sunrobin.com/default.aspx,那么图片类的静态文件应该放到w w w.sunrobinimg.com域名下边。而且这两个域名其实最终可以指向同一个server,但是浏览器发送cookie的原则只是根据域名是否一样,不关心最终在哪个server,而且还有一种方式,就是使用CDN
  • 那么是cookie的名称,value是cookie的值,domian字段设置cookie的域名,path字段可以访问cookiede页面路径

cookie的一些操作方法

let cookie = {
  //参数分别是cookie的名称,cookie的值,cookie的有效时间
	set : function(key ,value, time) {
		let date = new Date();
		let expiresDays = time;
		date.setTime(date.getTime() + expiresDays * 24 * 3600 *1000);
    //这里是添加到已有的cookie中, 不要弄成+=
		document.cookie = key + '=' + value + ";expores=" + date.toTimeString();
	},
	get : function(key) {
		let getCookie = document.cookie.replace(/[ ]/g, "");
		let arrCookie = getCookie.split(";");
		let tips;
		for (let i = 0; i != arrCookie.length; i++) {
			let arr = arrCookie[i].split('=');
			if (key == arr[0]) {
				tips = arr[1];
				break;
			}
		}
		return tips;
	},
	delete : function(key) {
		let date = new Date();
		date.setTime(date.getTime()-10000000);
		document.cookie = key + '= ;expores=' + date.toTimeString();
	}
}

Writer&Contact

{
  "name":"Jontyy" , 
  "email": " [email protected]",
  "gitHub" : "https://github.com/YJD199798/"
}