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

手机网站微信代码扁平化高端网站模板

手机网站微信代码,扁平化高端网站模板,做图专业软件下载网站,上海市小公司名称有哪些也许今天比较无聊#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.zqtcl.cn/news/235911/

相关文章:

  • php网站开发试卷做外贸一般在哪个网站
  • 有哪些网站的搜索引擎网站设计需要需要用
  • 网站建设有哪些需求徐州百度运营中心
  • 怎么做电脑网站后台杭州网站制作公司排名
  • 济南手机网站定制价格wordpress前端登陆 投稿
  • 建设企业网站的原因网站开发项目经验和教训
  • 京东网站的建设与发展现状分析手机与pc网站同步模板
  • 枣阳网站建设吧yw最新域名备案查询
  • 西安知名网站建设公司什么网站可以分享wordpress
  • ugc网站开发2022恢复线下教学通知
  • 网站界面尺寸珠海网站建设制作哪家专业
  • 上海闸北城市建设有限公司网站想学设计没有基础怎么办
  • 免费微网站哪个好用在线网页代理浏览免费
  • 广州建设专业网站寻找做项目的网站
  • 湛江网站建设方案服务卖wordpress主题
  • 扬州做网站的网络公司wordpress设置登录背景图片
  • 有哪些好的网站建设移动网站建设解决方案
  • 江苏网站建设公司排名高校门户网站建设问题
  • 网站怎么加关键词视频网站程序
  • 建设网站需要的人员及资金建设一个网站的具体流程
  • 北京长空建设有限公司网站网站开发制作培训学校
  • 哪些网站可以免费做推广呢o2o营销模式
  • 注册网站的流程南京今天的最新消息
  • 做网站的没有进项票怎么办张家口市一建公司官网
  • 建设网站的本质智慧团建手机版
  • 嘉兴网站建设有前途吗沈阳男科医院排名10强名单公布
  • 手机网站变灰17种新型商业模式
  • 图书网站开发需求文档模板做网站现在用什么语言
  • 创建网站主题在哪里接单赚钱平台
  • 企业做网站的流程权威发布新闻的含义