当前位置: 首页 > news >正文

如何做旅游休闲网站百度高级搜索

如何做旅游休闲网站,百度高级搜索,网站响应时间长,怎样做网站推广啊抖音原文网址:JS--localStorage设置过期时间的方案(有示例)_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍如何使用localStorage设置数据的过期时间。 问题描述 localStorage是不支持设置过期时间的,cookie虽然支持设置过期时间但它存的数据量很小。所…

原文网址:JS--localStorage设置过期时间的方案(有示例)_IT利刃出鞘的博客-CSDN博客

简介

说明

本文介绍如何使用localStorage设置数据的过期时间。

问题描述

localStorage是不支持设置过期时间的,cookie虽然支持设置过期时间但它存的数据量很小。所以在需要存一些带过期时间的数据时,就要手写工具来实现。

思路

存数据时:将value封装到一个对象里,这个对象里额外加一个过期时间。

读数据时:如果当前时间超过了过期时间,则返回null或者空对象;否则返回value。

测试结果

如下几种方案的测试结果都是一样的:

第一次获取时获取到了数据;4秒后数据过期了,再获取时成了null。

方案1:封装为函数

js

/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/
function writeExpire(key, value, expire) {let obj = {time: new Date().getTime(),data: value,expire: expire,};let objStr = JSON.stringify(obj);localStorage.setItem(key, objStr);
}/*** 读出localStorage*/
function readExpire(key) {let value = localStorage.getItem(key);if (!value || value === "null") {return value;}value = JSON.parse(value);if (Date.now() - value.time > value.expire * 1000) {localStorage.removeItem(key);return null;}return value.data;
}

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><script src="LocalStorageUtil.js"></script>
</head>
<body>
<script>writeExpire("key1", "value1", 2)console.log(readExpire("key1"));sleep(4000).then(() => {console.log(readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

方案2:封装为对象

js

export let localStorageUtil = {/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/writeExpire: function (key, value, expire) {let obj = {time: new Date().getTime(),data: value,expire: expire,};let objStr = JSON.stringify(obj);localStorage.setItem(key, objStr);},/*** 读出localStorage*/readExpire: function (key) {let value = localStorage.getItem(key);if (!value || value === "null") {return value;}value = JSON.parse(value);if (Date.now() - value.time > value.expire * 1000) {localStorage.removeItem(key);return null;}return value.data;}
}// export default localStorageUtil;

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="module">import {localStorageUtil} from "./LocalStorageUtil.js";localStorageUtil.writeExpire("key1", "value1", 2)console.log(localStorageUtil.readExpire("key1"));sleep(4000).then(() => {console.log(localStorageUtil.readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

方案3:ES5扩展localStorage

js

/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/
Storage.prototype.writeExpire = (key, value, expire) => {let obj = {data: value,time: Date.now(),expire: expire};//localStorage 设置的值不能是对象,转为json字符串localStorage.setItem(key, JSON.stringify(obj));
}/*** 读出localStorage*/
Storage.prototype.readExpire = key => {let value = localStorage.getItem(key);if (!value || value === "null") {return null;}val = JSON.parse(value);if (Date.now() - val.time > val.expire * 1000) {localStorage.removeItem(key);return null;}return val.data;
}

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="module">import './LocalStorageUtil.js';localStorage.writeExpire("key1", "value1", 2)console.log(localStorage.readExpire("key1"));sleep(4000).then(() => {console.log(localStorage.readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

方案4:ES6扩展localStorage

js

class LocalStorageUtil {constructor() {this.storage = window.localStorage;}/*** 写入localStorage* @param key    key* @param value  value* @param expire 超时时间(以秒为单位)*/writeExpire(key, value, expire) {let tempObj = {};tempObj.key = key;tempObj.value = value;tempObj.expire = Date.now() + expire * 1000;this.storage[key] = JSON.stringify(tempObj);return tempObj;}/*** 读出localStorage*/readExpire(key) {let value = localStorage.getItem(key);if (!value || value === "null") {return null;}let valueObject = JSON.parse(value);let expire = valueObject["expire"];if (!expire) {return valueObject.value;}if (Date.now() >= expire) {this.remove(key);return null;}return valueObject.value}remove(key) {this.storage.removeItem(key);}
}export default LocalStorageUtil;

html

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script type="module">import LocalStorageUtil from "./LocalStorageUtil.js";let localStorageUtil = new LocalStorageUtil();localStorageUtil.writeExpire("key1", "value1", 2)console.log(localStorageUtil.readExpire("key1"));sleep(4000).then(() => {console.log(localStorageUtil.readExpire("key1"));})function sleep(time) {return new Promise((resolve) => setTimeout(resolve, time));}
</script>
</body>
</html>

http://www.ds6.com.cn/news/61430.html

相关文章:

  • 重庆怎么在网站上做广告上海网络seo优化公司
  • 个人主页设计html代码怎么做好seo内容优化
  • 网站开发如何引用函数搜索引擎优化介绍
  • visual studio广州seo排名优化
  • 郑州网站建设案例网站如何发布
  • 咸宁网站建设哪家专业微信朋友圈的广告怎么投放
  • 湖南网站建设360o西安seo网站关键词优化
  • 团购网站做二级域名免费建网站最新视频教程
  • 软路由做网站杭州关键词推广优化方案
  • 温州集团网站建设seo运营是做什么的
  • 网站关键词排名怎么优化百度经验手机版
  • 网站域名备案更改吗广告联盟
  • ui设计师有前途吗seo伪原创工具
  • 给别人做网站能赚钱吗网络营销具有哪些特点
  • 西安网络公司做网站seo外包如何
  • 网站开发美工总结网络推广是什么专业
  • 成都学校网站建谷歌sem
  • 苏州做网站外包的公司湖南百度seo排名点击软件
  • wordpress 回到顶部插件手机seo排名软件
  • 吉首做网站深圳推广不动产可视化查询
  • 自己做的网站提示不安全qq推广链接生成
  • 网站公告怎么做成都网络营销推广公司
  • 个人网站用凡科建站好吗一键免费生成网页的网站
  • 上海企业在线登记汕头网站排名优化
  • 内网穿透做网站能查到网站ip吗春哥seo博客
  • 西安疫情最新消息轨迹南宁企业官网seo
  • 黄山几月份去最好seo的中文含义是
  • 上海 高端 网站建设北京网络营销咨询公司
  • 南京大型网站设计公司有哪些短视频营销推广
  • 漯河网站推广哪家好seo搜索引擎优化是