前端使用cache storage实现远程图片缓存

Cache Storage 的主要特点和用途

  1. 缓存网络资源:可以将经常访问的网络资源缓存到 Cache Storage 中,以提高网页加载速度,减少网络请求。
  2. 离线访问:当用户处于离线状态时,可以使用 Cache Storage 中的缓存资源来加载网页内容,提供更好的离线访问体验。
  3. 优先级控制:可以通过设置缓存的优先级,确保重要资源优先缓存,而不会占用过多的存储空间。

效果

网页中的图片首次加载时会将图片blob文件存储到cache,网页刷新图片优先从cache缓存中读取,不会再次从服务器请求
作者:__sgf__
链接:https://www.nowcoder.com/discuss/516278915950735360
来源:牛客网
[^1]: [mermaid语法说明](https://mermaidjs.github.io/)

<template><div><img :src="src" :style="style"/></div>
</template>
<script>
import req from '@/request.js';
export default {name: 'eip-img',props: ['isDisplay', 'imgSrc', 'fileJson', 'imgHeight', 'imgWidth', 'urlSetting'],data() {return {src: '',style: {},};},computed: {},created() {this.testCache()if (this.imgHeight > 0 && this.imgWidth > 0) {this.style = {height: this.imgHeight + 'px',width: this.imgWidth + 'px',};}},methods: {async testCache(){let _this = this;if (this.isDisplay) {if (this.fileJson) {var json = JSON.parse(this.fileJson);let id = json[0].id;var cacheName = 'eipimg'  // 定义cache名称var path = window.context.portal + '/file/onlinePreviewController/v1/getFileById_' + id  // 定义路径var cachesMatch = await caches.match(path) // 匹配当前路径var cachesLocal = await caches.has(cacheName)//如果当前已有数据则直接获取缓存的数据if(cachesMatch && cachesLocal){caches.match(path).then(res => {return res.text()}).then(res => {// console.log("获取cache数据: ", res)_this.src = res})}else{// 如果没有则获取远程数据req.get(path, 'arraybuffer').then(response => {var reader = new window.FileReader();reader.readAsDataURL(new Blob([response.data])); reader.onloadend = function() {_this.src = reader.result// 将请求的数据保存在caches中caches.open(cacheName).then(cache => {cache.put(path, new Response(reader.result, { status: 200 }))})}});}}} else {this.src = this.imgSrc;}}}
};
</script>
<style lang="stylus" scoped>
div[aria-invalid='true'] >>> .el-input__inner, div[aria-invalid='true'] >>> .el-input__inner:focus {border-color: #f56c6c;
}
</style>

调用

<eip-img  isDisplay="true" imgSrc="" :imgHeight='60' :imgWidth='60' :fileJson='`[{"id": "${item.id}"}]`' />

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/443754.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高等数学:微分

本文主要参考视频&#xff1a; 【建议收藏】同济七版《高等数学》精讲视频 | 期末考试 | 考研零基础 | 高数小白_哔哩哔哩_bilibili 3.3.1.1 微分的定义_哔哩哔哩_bilibili 3.3.5.1 导数与微分区别_哔哩哔哩_bilibili 仅供本人学习使用。 什么是微分 相对于导数来说&#xff0c…

【数据分享】1929-2023年全球站点的逐日最高气温数据(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01; 之前我们分享过1929-2023年全球气象站…

springboot144基于mvc的高校办公室行政事务管理系统设计与实现

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

高通GAIA V3命令参考手册的研读学习(十三):GAIA通知

如前文《高通GAIA V3命令参考手册的研读学习&#xff08;四&#xff09;》所述&#xff0c;PDU一共有四种&#xff0c;前面已经讲了命令、回应以及错误码&#xff0c;现在来看最后一种&#xff1a;通知。 4. QTIL GAIA通知 通知发送的方向&#xff0c;是由设备发送到移动应用…

Redis入门 -- 用java操作redis -- 苍穹外卖day05

1.Redis入门 1.1 Redis简介 Redis是一个基于内存的Key-value 结构数据库。 redis将数据存在内存当中。-->内存存储 mysql将数据通过数据文件的方式存在磁盘上。---> 磁盘存储 Redis : 基于内存存储&#xff0c;读写信息高。 适合存储热点数据(热点商品 &#xff0c…

【笔记】React-Native Navigation页面导航

/** * 须知&#xff1a;a bare React Native Project(not an Expo managed project) * * React官方文档&#xff1a;https://reactnative.dev/docs/navigation * * 当前文档基于6.x * React Navigation文档&#xff1a;https://reactnavigation.org/docs/getting-started * …

Kubernetes实战(二十一)-event事件持久化

默认情况下&#xff0c; K8S 会将事件保留在 etcd 中一个小时&#xff0c;超过1小时的事件将无法看到&#xff0c;所以 K8S 默认保留事件的时间不足以来更深入的了解集群&#xff0c;所以将事件导出到集群外存储是有必要的&#xff0c;以实现可观测性和告警。 Event事件持久化…

《二叉树》——3(层序遍历)

目录 前言&#xff1a; 层序遍历: 解析&#xff1a; 前言&#xff1a; 本文主讲链式二叉树的层序遍历&#xff0c;在前面的张篇blog我们初步实现了链式二叉树递归部分的内容&#xff0c;对于递归算法的学习和思维方式我们仍然需要不断加强&#xff0c;所以将对链式二叉树进行…

Outlook技巧:如何插入可以用指定浏览器打开的链接

Outlook中的链接&#xff0c;有时直接点击无法打开&#xff0c;找本地Edge才能打开。如何让Url能够指定打开的浏览器呢&#xff1f; 插入链接时&#xff0c;直接加上前缀Microsoft-edge即可。 操作步骤&#xff1a; 编辑邮件界面&#xff0c;菜单选择插入-》链接 在链接地址…

MongoDB数据模型和WiredTiger读写模型

MongoDB数据模型 思考&#xff1a;MongoDB为什么会使用BSON&#xff1f; BSON协议与数据类型 JSON JSON是当今非常通用的一种跨语言Web数据交互格式&#xff0c;属于ECMAScript标准规范的一个子集。JSON&#xff08;JavaScript Object Notation, JS对象简谱&#xff09;即J…

客户端熔断器基于golang Grpc具体实现(Google SRE客户端熔断器)

目录 前言 一、什么是Google SRE 二、Google SRE 熔断器的工作流程&#xff1a; 三、Google SRE GRPC 代码实现 四、测试用例 大家可以关注个人博客&#xff1a;xingxing – Web Developer from Somewhere 有关后端问题探讨 前言 当某个用户超过资源配额时&#xff0c…

搜维尔科技:第九届元宇宙数字人大赛,参赛小组报名确认公告!

各位参赛选手大家好&#xff0c;近期已收到新增报名信息如下表&#xff0c;请各位参赛选手确认&#xff0c;如果信息有误或信息不完整请电话联系赛务组工作人员进行更正 随着元宇宙时代的来临&#xff0c;数字人设计成为了创新前沿领域之一。为了提高大学生元宇宙虚拟人角色策划…