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

网站备案照相建设门户网站系统的必要性

网站备案照相,建设门户网站系统的必要性,编辑目录中的字体 wordpress,中国万网域名注册服务内容也许今天比较无聊#xff0c;突然想前端怎么把图片缓存的本地#xff1f;如果是数据流#xff0c;直接保存到localStorage#xff0c;但是如果是网络url地址怎么办#xff1f;存个url肯定没有什么意义#xff0c;苦思冥想还是把图片保存为base64格式#xff0c;这又遇到… 也许今天比较无聊突然想前端怎么把图片缓存的本地如果是数据流直接保存到localStorage但是如果是网络url地址怎么办存个url肯定没有什么意义苦思冥想还是把图片保存为base64格式这又遇到了问题怎么才能把url转成base64呢于是就想到了canvas。 以react为例首先接口获取数据在取到数据后先判断有没有缓存如果有就取缓存中的数据如果没有则使用canvas将其转化成base64存储就可以了。为了方便操作在localStorage存储中添加了一个更新时间如果想更新缓存可以改变时间就可以了其次用url当key值主要是为了方便取用。 import React, { useState, useEffect } from react const CacheImg () {let [imgURL, setImgURL] useState()useEffect(() {getData()}, [])const getData () {new Promise(resolve {// 这里模仿接口发送异步请求let data {updateTime: 2023-11-09 12:00:00,url: https://web-assets.dcloud.net.cn/unidoc/zh/shuijiao-small.jpg}resolve(data)}).then(res {let localData JSON.parse(localStorage.getItem(cacheUrls)) || {}// 先获取本地存储的数据当更新时间和url都一样时就取缓存数据if (localData.updateTime res.updateTime localData[res.url]) {setImgURL(localData[res.url])} else {let canvas document.createElement(canvas)let ctx canvas.getContext(2d)let image new Image()// 解决图片跨域image.crossOrigin Anonymousimage.src res.urlimage.onload () {canvas.width image.widthcanvas.height image.height// 绘制图片-在左上角的位置ctx.drawImage(image, 0, 0)// 存个更新时间方便更新let cacheObj {updateTime: res.updateTime,// https://web-assets.dcloud.net.cn/unidoc/zh/shuijiao-small.jpg: }// 返回值是一个数据url是base64组成的图片的源数据cacheObj[res.url] canvas.toDataURL(image/png)// 本地存储localStorage.setItem(cacheUrls, JSON.stringify(cacheObj))setImgURL(cacheObj[res.url])// 清空canvascanvas null}}})}return div{imgURL ? img src{imgURL} / : }/div }export default CacheImg 看一下network只有第一次会加载图片其他情况都会取缓存中的大大的节约了获取图片的时间你也许会说浏览器本身就带缓存可是在开发中有时候会开启无缓存模式这个时候对一成不变的图片还每次都加载岂不是浪费时间即便关了浏览器、关了电脑再打开也不会在去请求url。 为了防止保存很多无用的图片可以给localStorage设置一个过期时间虽然localStorage 本身没有提供设置有效期的方法但我们可以自己封装个方法来实现。 例如这样 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) {localStorage.removeItem(key)return null}return val.data };获取数据 let storage localStorage.getExpire(cacheUrls)设置数据 // 有效期七天 localStorage.setExpire(cacheUrls, vals, 86400000 * 7);
http://www.pierceye.com/news/387685/

相关文章:

  • 微信网站建设报价网站优化提升排名
  • wap网站分享代码自定义网站建设
  • 网站换域名了怎么办seo百度帐号注册
  • 淄博网站建设公司羊肉片机网站模板制作
  • 邯郸网站设计价位南京h5 网站建设
  • wordpress主要函数seo是哪个英文的缩写
  • 自助建站网站seo公司静态网站作品
  • 内部网站建设、北京的网页建设公司
  • 网站建设的后台登录oa信息管理系统
  • 镇江企业网站建设公司wordpress模板如何修改
  • 汕头中文建站模板建设全网营销型网站
  • 外贸网站建设盲区雄安移动网络电视
  • 建站方法友情链接发布平台
  • 做美剧盗版网站国内购物网站案例分析
  • 淄博网站制作哪家公司好东莞网站设计公司哪家好
  • 用dreammwea怎么做视频网站域名注册网站建设
  • 网站关键词用热门的还是冷门注销网站备案时间
  • 苏晋建设集团网站书店网站建设目标调研的方案
  • 下沙建设局网站建设公司内网网站的意义
  • 全屏响应式网站模板污网站公司网站
  • 抚远佳木斯网站建设领动建站
  • 班级网站 建设模板做任务佣金网站源码
  • 网站的关键词库广州建网站培训
  • 好的网页设计网站网站排名提升工具
  • 个人网站需要那些企查查入口网页版
  • 怎么用自己主机做网站、淮南网站推广
  • 丰台网站制作网站域名.xin
  • 省建设厅网站6工作室网页模板
  • 怎么制作免费网站教程视频wordpress 准迁
  • html5新增标签seo网址超级外链工具