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⽅法存储的数据没有时间限制。第⼆天、第⼆周或下⼀年,数据依然可⽤
统计页⾯访问次数
<script>
if(localStorage.pagecount){ localStorage.pagecount=Number(localStorage.pagecount)+1;
}else{
localStorage.pagecount=1;
}
document.write("Visits"+localStorage.pagecount+"times");
</script>
sessionStorage⽅法针对⼀个sessionStorage进⾏数据存储。当⽤户关闭浏览器窗⼝后,数据会被删除
eg下⾯的例⼦对⽤户在当前session中访问页⾯的次数进⾏计数:
<script>
if(sessionStorage.pagecount){
sessionStorage.pagecount=Number(sessionStorage.pagecount)+1;
}else{
sesssionStorage.pagecount=1;
}
document.write("Visits"+sessionStorage.pagecount+"times this session");
</script>
清空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"]; //第⼆种读取
js获取json的key和valuevar c = Item("c"); //第三种读取
// **修改storage的值 **
storage.a=4;
console.log(storage.a); // 4
注:通过getItem或者使⽤storage["key"]获取到的信息均为实际存储的副本
三. 判断是否浏览器中打开
<script type="text/javascript">
#function is_weixn(){
var ua = LowerCase();
if(ua.match(/MicroMessenger/i)=="micromessenger") {
return true;
} else {
return false;
}
}
前后端交互协议
四. 前后端交互协议
四.
restful协议
五. 常见浏览器兼容问题
1).不同浏览器的标签默认的margin和padding不同,所以设置margin,padding 为0;
2).条件注释,css hack,特定浏览器标⽰的样式
-ms- -moz- -webkit- ...
3).IE透明度的处理
4).javascript的兼容性 如event事件 e || window.event
六、javascript闭包
补充:
(function(){...})(); ⾃执⾏匿名函数
解释:包围函数的第⼀对括号向脚本返回未命名的函数,随后⼀对空括号⽴即执⾏返回的未命名函数,括号内为匿名函数的参数。
作⽤:可以⽤它创建命名空间,只要把⾃⼰所有的代码都写在这个函数包装内,外部就不能访问,除⾮你允许变量前加window,这样该函数或变量就成为全局。各js库的代码基本也是这种组织形式。
闭包是javascript语⾔的⼀个难点,也是它的特⾊,很多⾼级应⽤都是依靠闭包实现。
1、变量的作⽤域
要理解闭包,⾸先必须能理解javascript特殊的变量作⽤域。
变量的作⽤域⽆⾮就两种:全局变量和局部变量。
javascript语⾔的特殊之处,就是在函数内部可以直接读取全局变量;另⼀⽅⾯,在函数外部⾃然⽆法读取函数内部的局部变量。
这⾥有⼀个需要注意,函数内部声明变量的时候,⼀定要使⽤var命令,如果不⽤,实际上声明了⼀个全局变量。
2、如何从外部读取局部变量
那就是在函数内部,再定义⼀个函数
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论