localstorage

Web Storage 学习

余生长醉 提交于 2020-11-01 19:15:04
简介 html5 中的 Web Storage 包括了两种存储方式:sessionStorage 和 localStorage。 sessionStorage 用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问,会话结束后数据也随之销毁。localStorage 用于存储一个域名下的需要永久存在在本地的数据,这些数据可以被一直访问,直到这些数据被删除。因此sessionStorage 和 localStorage 的主要区别在于他们存储数据的生命周期,sessionStorage 存储的数据的生命周期是一个会话,而 localStorage 存储的数据的生命周期是永久,直到被主动删除,否则数据永远不会过期的。 Web Storage 和 cookie 的异同点及优劣势 Web Storage 和 cookie 有许多相同之处: 它们都可以用于存储用户数据 它们存储数据的格式都是字符串形式 它们存储的数据都有大小限制 Web Storage 和 cookie 也有不同之处: 它们的生命周期不同。sessionStorage 的生命周期是一个会话,localStorage的生命周期是永久,cookie 的生命周期可以自定义,cookie 可以设置过期时间,数据在过期时间之前可以访问。 它们的存储大小限制不同。大部分现代浏览器 Storage

vue中使用axios简单的封装post请求,并使用返回的数据

好久不见. 提交于 2020-04-08 12:54:12
发现在学习vue的时候,不论你用的是哪种编程工具,是否使用打包和脚手架,都需要手工的多练习,只能说步步是坑. 在使用的过程中一定要多按F12,多写console.log来看输出的值是什么,非常有助于排错和知道返回的是啥东西 1、在vue的data中定义一个数组pingxuanren,用于存放从服务器端请求来的数据 data:{ pingxuanren:[], //需要评分的人员信息 userinfo:[], //用户自己的身份信息 userxx:'' }, 2、然后简单的封装一下axios的post请求,我也是从网上看了很多,抄了一下,自己并不会写。 //封装一下axios的POST请求 axiosPost:function(url,params){ return new Promise((resolve, reject) => { axios({ url: url, method: 'post', data: params, transformRequest: [function(data) { let ret = '' for(let it in data) { ret += encodeURIComponent(it) + '=' + encodeURIComponent(data[it]) + '&' } return ret }], headers: { 'Content

本地化存储:localStorage与sessionStory

若如初见. 提交于 2020-04-07 16:28:17
1、localStorage: 用法: 存储单一数据时:localStorage.setItem("Name", data); JSON.parse(localStorage.getItem("Name")); 存储对象时 :localStorage.setItem("Name", JSON.stringify(obj)); JSON.parse(localStorage.getItem("Name")); 须知: localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的; 目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换; 2、sessionStory 用法: 存储单一数据时:sessionStory.setItem("Name", data); JSON.parse(sessionStory.getItem("Name")); 存储对象时 :sessionStory.setItem("Name", JSON.stringify(obj)); JSON.parse(sessionStory.getItem("Name")); 须知: 只在当前页面有效

理解 vue-router的beforeEach无限循环的问题

醉酒当歌 提交于 2020-04-06 18:11:46
在理解beforeEach无限循环之前,我们先来看一下beforeEach相关的知识点,该篇文章的项目是基于 express+vue+mongodb+session 实现注册登录 这篇文章项目基础之上进行讲解的,因为登录完成后,会跳转到列表页面,那么在跳转到列表页面之前,我们会使用 router.js 使用beforeEach来判断下,如果登录成功,并且session在有效期内的话,就跳转到下一个页面去,否则的话,就重定向到登录页面去。 app/index/router.js 代码如下: import Vue from 'vue'; import VueRouter from 'vue-router'; // 告诉 vue 使用 vueRouter Vue.use(VueRouter); const routes = [ { path: '/list', name: 'list', component: resolve => require(['./views/list'], resolve) }, { path: '*', // 其他没有的页面都重定向到 home页面去 redirect: '/login' }, { path: '/login', name: 'login', component: resolve => require(['./views/login'],

localStorage设置过期时间

爱⌒轻易说出口 提交于 2020-04-06 10:34:35
场景 # 浏览器端需要存储一个用户的标识和 cookie 一样需要过期时间,但是用的是 localStorage 存储。而 localStorage 一经存储除非手动删除是不会过期的。那就需要自己实现过期机制。网上找了几种简单的方法。 方案一:ES5扩展Storage # 思路很简单,存储的值加一个时间戳,下次取值时验证时间戳。 注意: localStorage 只能存储字符,存入时将对象转为 json 字符串,读取时也要解析 Copy Storage.prototype.setExpire = ( key, value, expire ) => { let obj = { data : value, time : Date .now(), expire : expire }; //localStorage 设置的值不能为对象,转为json字符串 localStorage.setItem(key, JSON .stringify(obj)); } Storage.prototype.getExpire = key => { let val = localStorage.getItem(key); if (!val) { return val; } val = JSON .parse(val); if ( Date .now() - val.time > val.expire) {

国内外电商平台反爬虫机制

☆樱花仙子☆ 提交于 2020-04-03 17:57:12
电商平台的核心引擎大致分为两块,搜索架构和产品布局,应该说各有各的特色。当然今天的主题是反爬虫机制,电商平台如何能保护好自己的数据,又不影响正常用户体验,所谓当今业界一场持久的攻防博弈。 一阶爬虫(技术篇) 应用场景一:静态结果页,无频率限制,无黑名单。 攻:直接采用scrapy爬取 防:nginx层写lua脚本,将爬虫IP加入黑名单,屏蔽一段时间(不提示时间) 应用场景二:静态结果页,无频率限制,有黑名单 攻:使用代理(http proxy、VPN),随机user-agent 防:加大频率周期,每小时或每天超过一定次数屏蔽IP一段时间(不提示时间) 应用场景三:静态结果页,有频率限制,有黑名单 攻:使用代理,随机1-3秒爬取,爬10秒休息10秒,甚至范围时间爬取,增加机器 防:当5分钟内请求超过60次,弹出验证码页面,通过验证增加5分钟无限制时间,不通过验证码则屏蔽增加一小时 (时间自拟) 应用场景四(Amazon):静态结果页,有频率限制,有黑名单,有验证码 攻:python+tesseract验证码识别库模拟训练,或基于tor、crawlera(收费)的中间件(广度遍历IP) 防:前端异步加载js,动态加密token 应用场景五(Aliexpress):动态结果页,有频率限制,有黑名单,有验证码 攻:python+Selenium,利用chrome内核加载动态结果页

localstorage和sessionstorage的区别

梦想与她 提交于 2020-03-31 08:24:33
localStorage和sessionStorage都是window对象提供的全局属性,用途都是在浏览器中存储key/value对的数据。 从使用的角度来看,两者的唯一区别在于时效性。 sessionStorage在关闭窗口或标签页之后将会删除这些数据。 而localStorage则没有这样的特性,今天、下周、明年、一百年,甚至理论上的成千上万年后都能用,除非你手动去删除。 如果你想在浏览器窗口关闭后还保留数据,请使用localStorage。 如果你是想用于临时保存同一窗口(或标签页)的数据,请使用sessionStorage。 "小朋友,你是否有很多问号。" 来源: https://www.cnblogs.com/yanggb/p/12591573.html

实践中的电商前端优化

做~自己de王妃 提交于 2020-03-29 08:59:48
前端优化已经是一个被写烂的题材了。 虽千万人吾往矣,这里我仅分享我的一些实践经验。 欢迎一起交流 欢迎关注我的个人公众号,不定期更新自己的工作心得。 正文如下 前端性能 1. 模块化 严格来说,代码模块化并不能带来性能上的提升,但我还是将模块化提出来,因为它真的很重要,重要到几乎所有的优化都与它息息相关。 常见的模块化方案有:AMD、CMD、UMD、ES6 如何选择? 团队习惯 个人偏好 业务需要 我靠!你怎么能把业务需要放在最后一个考虑? 因为没有哪一块业务会因为使用了不同的模块化方案而产生不同的结果。 而且我觉得 软件开发中的以人为本 用在这里刚好合适,其他地方就只能 呵呵了。毕竟业务高于一切,这是操守。 2. 缓存 缓存一定要加! 缓存一定要加! 缓存一定要加! 因为CDN真的很贵。。。 没有CDN?那就更得加缓存了!!! 缓存有很多方式,最为常见的就是下面这两种了 浏览器304缓存 localstorage本地存储 业界,一直有关于304缓存与localstorage性能的争议,这里我们不讨论两者的差异,或性能问题。 我一向以业务导向选择方案,这里我选择的是localstorage,如果你愿意,你可以通过localstorage将缓存玩出一朵花出来。 你可以这么干: 通过localstorage存储js、css资源; 资源版本控制; 只要你愿意

前端面试题目整理

吃可爱长大的小学妹 提交于 2020-03-28 20:12:33
1.请说出三种减少页面加载时间的方法。 * 1.优化图片 * 2.优化css,压缩合并css * 3.减少http请求(合并文件,合并图片) 2.解释下CSS sprites ,以及你要如何在页面或网站中使用它。 * CSS Sprites其实就是把网页中一些背景图片整合到一张图片文件中,再利用CSS的“background-image”,“background-repeat”,“background-position”的组合进行背景定位,background-position可以用数字精确的定位出背景图片的位置。 3.简述一下你对HTML语义化的理解? * 用正确的标签做正确的事情。 * HTML语义化让页面的内容结构化,结构更清晰,便于对浏览器、搜索引擎解析。即使在没有样式css情况下也以一种文档格式显示,并且是容易阅读的。 4.为什么要推出es6,相较es5有啥好处?(es6,实际上,就是一种新的javascript规范) * es6,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率。 你所不知道的es6新特性 5.原生forEach和map的区别以及兼容 https://www.cnblogs.com/liuruyi/p/6483526.html 前端开发的优化问题 1、减少http请求次数:css spirit,data url 2、JS

LocalStorage存储和cookie存储

我们两清 提交于 2020-03-27 22:10:30
localStorage是H5的新特性,主要用来本地存储,一般浏览器支持的大小是5M,不同浏览器会有所不同,解决了cookie存储空间不足的问题。 2、使用: ⑴、存 if(!window.localStorage){ alert("浏览器不支持localstorage"); return false; }else{ var storage = window.localStorage; // 方法1 storage["a"] = 1; // 方法2 storage.b = 1; // 方法3 推荐 storage.setItem("c", 3); console.log(typeof storage["c"]); // string int类型打印出来是string,localstorage只支持string类型的存储 } ⑵、取 if(!window.localStorage){ alert("浏览器不支持localstorage") }else{ var storage=window.localStorage; // 方法1 var a=storage.a; // 方法2 var b=storage["b"] // 方法3 推荐 var c = storage.getItem("c"); } ⑶、修改 if(!window.localStorage){ alert(