commonSense

一、session与cookie区别

session存储在服务端,
session会在一定时间内保存在服务器上,当访问增多,会比较站服务器性能,考虑性能方面,应当用cookie
session是服务端技术,服务器在运行的时候可以为每个用户的浏览器创建一个独享的session对象,
由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。

cookie存储在客户端,
别人可以分析存储在本地的cookie并进行cookie欺骗,考虑安全问题应当用session
单个cookie保存数据不超过4k,很多浏览器限制一个站点最多保存20个cookie
cookie是客户端技术,程序把用户的信息以cookie的形式存储在用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。

如不设置cookie的过期时间,则表示cookie的生命周期为浏览器的会话期间,关闭浏览器窗口,cookie就消失。
会话cookie存储在内存里,如设置了过期时间,浏览器会把cookie存在硬盘上,存在硬盘上的cookie可以在不同浏览器进程之间共享。

*HTML5Web存储

html5提供两种在客户端存储数据的方法

localStorage-没有时间限制的数据存储
sessionStorage-针对一个session的数据存储
之前这些都是有cookie完成。但是cookie不适合大量数据的存储,因为他们由每个对服务器的请求来传递,这使得cookie速度慢且效率也不高
在html5中,数据不是由每个服务器请求传递的,而是只有在请求时使用数据。它使得在不影响网站性能的情况下存储大量数据成为可能

eg:localStorage方法存储的数据没有时间限制。第二天、第二周或下一年,数据依然可用

统计页面访问次数

sessionStorage方法针对一个sessionStorage进行数据存储。当用户关闭浏览器窗口后,数据会被删除
eg下面的例子对用户在当前session中访问页面的次数进行计数:

清空storage

  • localStorage.clear();*

localStorage的优势与局限
优势:
1.扩展了cookie的4k限制;
2.可以将第一次请求的数据直接存储在本地,相当于一个5M大小的针对前端页面的数据库,相比于cooki可以节约带宽(但却只有高版本的浏览器才支持);
局限:
1.浏览器的大小不统一,并且在IE8以上的浏览器才支持这个属性;
2.目前所有的浏览器都会把localStorage的值类型限定为string类型,比较常见的json对象类型需要一些转换(可以使用JSON.stringify()这个方法,来将JSON转换成为JSON字符串);
3.在浏览器的私密模式下是不可读取的(读取之后要将JSON字符串转换成为JSON对象,使用JSON.parse()方法);
4.其本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,导致页面变卡;
5.不能被爬虫抓取到;
localStorage与sessionStorage的唯一区别就是localStorage属于永久性存储,二sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空

localStorage的写入有三种(三种读取):

var storage = window.localStorage;
// 三种写入
storage["a"]=1; // 写入a字段
storage.b=1; // 写入b字段
storage.setItem("c",3); // 写入c字段
console.log(typeof storage["a"]); // string
console.log(typeof storage["b"]); // string
console.log(typeof storage["c"]); // string
// 三种读取
var a = storage.a; //第一种读取
var b = storage["b"]; //第二种读取
var c = storage.getItem("c"); //第三种读取
// **修改storage的值 **
storage.a=4;
console.log(storage.a); // 4
注:通过getItem或者使用storage["key"]获取到的信息均为实际存储的副本
*eg:
storage.key={value1:"value1"};
storage.key.value1="a";
这里是无法对实际存储的值产生作用的,这种写法也不可以:storage.getItem("key").value1="a";

// 删除storage
storage.removeItem("key");//删除名称为“key”的信息。
storage.clear();​//清空localStorage中所有信息
console.log(storage.a); // undefined
// localStorage的键获取
for(var i=0;i var key = storage.key(i);
console.log(key);
}

使用key()方法,向其中出入索引即可获取对应的键

注:localStorage的使用遵循同源策略,所以不同的网站直接是不能共用相同的localStorage

二、js判断用户的浏览器设备是移动端还是pc端

三. 判断是否微信浏览器中打开

你可能感兴趣的:(commonSense)