Vue前端开发-缓存数据

embedded/2024/12/22 1:02:41/

一次请求,就是一次对服务器的访问,如果是不经常变化的数据,首次请求成功后,可以通过页面的localStorage对象,将数据缓存到浏览器中,下次再请求时,再取出缓存的数据,用于页面内容的显示,这种缓存数据的方式既减轻了服务器的访问压力,又加快了请求响应的速度,极大地优化了用户请求数据的体验。

localStorage是HTML 5标准中新增的一个用于数据缓存的对象,它的最大缓存体积为5M的字符内容,它是一个永久性的浏览器缓存对象,除非人为删除,否则,一直存在于浏览器中,即使是关闭浏览器后,再次打开,缓存对象依然存在于浏览器中。

localStorage有三个常用的操作方法,分别用于设置、读取和删除指定名称的缓存内容,具体实现的方法如下列代码所示:

// 1. 设置一个key值为cacheData的localStorage对象
localStorage.setItem("cacheData", "tgrong");
// 2. 获取key值为cacheData的localStorage对象
localStorage.getItem("cacheData");
// 3. 删除key值为cacheData的localStorage对象
localStorage.removeItem("cacheData"))

需要说明的是,在调用setItem方法设置一个localStorage对象时,参数key值必须确保在同一个域名下的唯一性,否则会被同名的内容所替代;参数value值必须是一个字符类型,如果是其他类型,如object类型时,必须先转换成字符型,否则无法缓存期望的数据。

接下来,演示如何将实例【9-1】请求获取的数据进行缓存过程。

实例9-2 缓存数据

1. 功能描述

在实例【9-1】的基础之上,新添加一个内容为“缓存数据”的按钮,点击该按钮时,先向服务器发送异步请求,获取响应数据后,缓存在本地,当再次点击该按钮时,如果发现有指定名称的缓存数据,则直接调用缓存,否则,再次发送请求获取数据。

2. 实现代码

为了实现数据请求成功后,缓存数据的功能,先打开路径为components/ch9/ 中的BaseRequest文件,修改后代码如代码清单9-6所示的。

代码清单9-6 BaseRequest.vue代码

<template><div class="iframe"><div class="i-left"><span>返回值:</span><span>{{ data }}</span></div></div><div class="iframe"><div class="i-left"><button @click="onSendRequest">发送请求</button><button @click="onCacheRequest">缓存数据</button></div></div>
</template>
<script>
export default {data() {return {data: ""}},methods: {...其他方法见实例【9-1onCacheRequest() {this.data = "loading...";// 先判断是否有缓存数据if (localStorage.getItem("cacheBase")) {this.data = localStorage.getItem("cacheBase");} else {this.$http.get('/?day=1-1').then(d => {this.data = d.data// 请求成功后,再缓存返回数据localStorage.setItem("cacheBase", d.data)}, err => {console.log(err.message)})}}}
}
</script>
<style>
/* 样式见示例【9-1】*/
</style>

3. 页面效果

保存代码后,页面在Chrome浏览器下执行的页面效果如图9-7所示。
在这里插入图片描述

4. 源码分析

在本示例中,当点击“缓存数据”按钮时,先判断key值为“cacheBase”的缓存数据是否存在,如果存在,则直接调用它,并赋值给变量data,显示在视图中;如果不存在,才发送异步请求,在获取请求成功响应数据时,将返回的数据缓存到key值为“cacheBase”的localStorage对象中,用于后续的判断和显示。
在这里插入图片描述


http://www.ppmy.cn/embedded/147670.html

相关文章

利器 | AppCrawler 自动遍历测试工具实践(一)

本文为霍格沃兹测试学院学院学员课程学习笔记&#xff0c;系统学习交流文末加群。 AppCrawler 是由霍格沃兹测试学院校长思寒开源的一个项目,通过名字我们大概也能猜出个方向&#xff0c;Crawler 是爬虫的意思&#xff0c;App 的爬虫&#xff0c;遍历 App &#xff1a; 官方 G…

写SQL太麻烦?免费搭建 Text2SQL 应用,智能写 SQL | OceanBase AI 实践

自OceanBase 4.3.3版本推出以来&#xff0c;向量检索的能力受到了很多客户的关注&#xff0c;也纷纷表达希望OB能拓展更多 多模数据库大模型 的AI应用实践。 在上篇文章 &#x1f449; OceanBase LLM&#xff0c;免费构建你的专属 AI 助手 &#xff0c;我们介绍了如何去搭建一…

校园点餐订餐外卖跑腿Java源码

简介&#xff1a; 一个非常实用的校园外卖系统&#xff0c;基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化&#xff0c;提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合&am…

基于DSP的IIR数字低通滤波器的设计(论文+源码)

1系统方案设计 在本次基于DSP的IIR数字低通滤波计中&#xff0c;拟以TMS320F28335来作为系统的主控制器&#xff0c;通过ADC0832模数转换芯片来对输入信号进行采集&#xff1b;通过TLC5615来将低通滤波后的信号进行输出&#xff1b;同时结合MATLAB仿真软件&#xff0c;对设计的…

InnoDB 事务系统(一):认识事务

事务&#xff08;Transaction&#xff09;是数据库区别于文件系统的重要特性之一。在文件系统中&#xff0c;如果正在写文件&#xff0c;但是操作系统突然崩溃了&#xff0c;这个文件就很可能被破坏。当然有一些机制可以把文件恢复到某个时间点。不过&#xff0c;如果需要保证两…

【十进制整数转换为其他进制数——短除形式的贪心算法】

之前写过一篇用贪心算法计算十进制转换二进制的方法&#xff0c;详见&#xff1a;用贪心算法计算十进制数转二进制数&#xff08;整数部分&#xff09;_短除法求二进制-CSDN博客 经过一段时间的研究&#xff0c;本人又发现两个规律&#xff1a; 1、不仅仅十进制整数转二进制可…

[Unity]【图形渲染】【游戏开发】Shader数学基础4-更多矢量运算

在计算机图形学和着色器编程中,矢量运算是核心的数学工具之一。矢量用于描述空间中的位置、方向、速度等各种物理量,并在图形变换、光照计算、纹理映射等方面起着至关重要的作用。本篇文章将详细讲解矢量和标量之间的乘法与除法、矢量的加法与减法、矢量的模与单位矢量、点积…

2024_12_20_生活记录

年底了&#xff0c;提前祝各位朋友们新年快乐&#xff01;我将近两年没动笔写blog了&#xff0c;主要确实挺忙。。。今天想简单聊聊自己的近期想法&#xff0c;一方面是职业规划&#xff0c;一方面是生信&#xff0c;最后是个人感悟。 职业规划 熟悉我的朋友们会了解我之前一直…