所谓的本地存储,其实就是把一些信息,存储到客户端版本地,存储的信息不会由于页面的跳转或关闭而消失,这样就能够实现不少功能需求了。
特色javascript
本地存储应用的案例:前端
登陆的时候,记住用户名和密码,其实就是把信息存储到客户端本地,下一次再打开页面的时候,直接从本地获取上一次存储的信息,而后自动登陆后者填充到对应的文本框中java
购物车案例:拿京东的购物车举例,在用户没有登陆京东的时候,购买的产品都是存储到本地的,进入个人购物车页面,展现的说全部信息都是从本地存储中获取展现的web
使用本地存储能够优化网站的性能,避免频繁触发AJAX请求,例如:咱们第一次从服务器获取数据,把获得的数据存储到本地一份而且记录存储的时间,当刷新页面的时候,咱们先去本地找信息,拿当前时间和以前存储的时间作对比,若是在1MIN以内(时间本身把控),就再也不发送AJAX请求,直接视同本地数据展现,若是超过期间,咱们从新发送请求,把最新数据拿到后,替换以前本地存储的数据…….算法
验证用户是否登陆:它的原理步骤是,首先当用户登陆成功后,咱们会在客户端本地存储一些当前登陆客户的基本信息(ID/用户名…),当须要验证是否登陆的时候(验证是否有登陆态),直接到本地去查找有没有存储那些信息,有则表明登陆,没有则表明没有登陆数据库
cookie
h5中提供的webStorage,其中包含localStorage和sessionStorage,最经常使用的是localStorage浏览器
本地数据库存储:webSQL和IndexedDB缓存
cookie是是目前前端市场上最经常使用的本地存储方式,它兼容全部的浏览器安全
它是H5中提供的本地存储方式,不兼容IE6-8浏览器,咱们通常在移动端使用居多,PC端不须要考虑兼容的状况下也可使用服务器
1.localStorage.setItem([key],[value])//-->设置本地存储信息
2.localStorage.getItem([key])//-->经过KEY获取本地存储的信息
3.localStorage.removeItem([key])//-->删除指定KEY对应的本地存储信息
4.localStorage.clear();//-->清除当前余下全部本地存储信息
5. localStorage.key([index]);-->使用localStorage存储的信息是一个Storage集合,会把全部的属性名KEY放在集合中,这个方法就是经过索引获取指定未知的属性名信息
6. //-->{name:'珠峰培训',age:'8',length:2}
7. //-->localStorage.key([1]);age
1.//cookie封装库
2.var cookieRender = (function () {
3.//->设置
4.function setValue(options) {
5. var _default = {
6. name: null,
7. value: null,
8. expires: new Date(new Date().getTime() + (1000 * 60 * 60 * 24)),
9. path: '/',
10. domain: ''
11.};
12. for (var key in options) {
13. if (options.hasOwnProperty(key)) {
14. _default[key] = options[key];
15. }
16. }
17. document.cookie = _default.name + "=" + escape(_default.value) + ";expires=" + _default.expires.toGMTString() + ";path=" + _default.path + ";domain=" + _default.domain;
18.}
19.
20.//->获取
21.function getValue(name) {
22. var arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
23. if (arr != null) {
24. return unescape(arr[2]);
25. }
26. return null;
27.}
28.
29.//->删除
30.function removeValue(options) {
31. var _default = {
32. name: null,
33. path: '/',
34. domain: ''
35. };
36. for (var key in options) {
37. if (options.hasOwnProperty(key)) {
38. _default[key] = options[key];
39. }
40. }
41. if (getValue(_default.name)) {
42. document.cookie = _default.name + "= ;path=" + _default.path + ";domain=" + _default.domain + ";expires=Fri,02-Jan-1970 00:00:00 GMT";
43. }
44.}
45.
46.return {
47. set: setValue,
48. get: getValue,
49. remove: removeValue
50.}
51.})();
52.//-->设置cookie
53.cookieRender.set({
54. name:'',
55. value:''
56.});
57.//-->获取cookie
58.cookieRender.get([key]);
59.//-->删除cookie
60.cookieRender.remove({
61. name:''
62.});
localStorage存储的信息都是字符串,若是咱们传递的不是STRING类型的,那么浏览器也会把其转换为字符串类型,而后再进行存储,因此咱们从本地获取的结果也是字符串类型的。
不论是cookie仍是localStorage哪个存储的信息,咱们均可以在谷歌控制台的Resources/Application选项中查看到:并且存储的信息都采用的是‘明文存储’,这样致使存储的信息存在安全隐患,因此在真实项目中是不鼓励存储重要信息的,若是非要进行存储的话,须要把存储的信息进行加密。
加密有两种方式
MD5的使用方式
引入MD5.js
1.hex_md5('00000000');//使用方式,里面的内容是须要加密的东西
MD5是不能解密的,网上说的解密其实就是一个数据库检索碰撞的过程:他们使用算法把一些简单的密码通过MD5的加密,把加密的结果存储到数据库,咱们去解密一个结果,后台拿到数据库碰撞,碰上就能解密,碰不了就解密不了。因此咱们平时要注意:
把中文汉字进行编码,把编码后的结果进行存储,如何编码呢?