我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Vue2中SSR如何缓存Api 数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Vue2中SSR如何缓存Api 数据

小编给大家分享一下Vue2中SSR如何缓存Api 数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

具体如下:

1. 安装缓存依赖: lru-cache

npm install lru-cache --dev

2. api 配置文件

config-server.js

var LRU = require('lru-cache')

let api
if (process.__API__) {
  api = process.__API__
} else {
  api = process.__API__ = {
    api: 'http://localhost:8080/api/',
    cached: LRU({
      max: 1000,
      maxAge: 1000 * 60 * 15
    }),
    cachedItem: {}
  }
}

module.exports = api

配置下lru-cache

3. 封装下 api

import axios from 'axios'
import qs from 'qs'
import md5 from 'md5'
import config from './config-server.js'

export default {
  post(url, data) {
    const key = md5(url + JSON.stringify(data))
    if (config.cached && config.cached.has(key)) {
      return Promise.resolve(config.cached.get(key))
    }
    return axios({
      method: 'post',
      url: config.api + url,
      data: qs.stringify(data),
      // 其他配置
    }).then(res => {
      if (config.cached && data.cache) config.cached.set(key, res)
      return res
    })
  }
}

ajax 库我们用axios, 因为axios在 nodejs 和 浏览器都可以使用

并且将 node 端和浏览器端分开封装

import config from './config-server.js'
const key = md5(url + JSON.stringify(data))

通过 url 和参数, 生成一个唯一的 key

if (config.cached && config.cached.has(key)) {
  return Promise.resolve(config.cached.get(key))
}
if (config.cached && data.cache) config.cached.set(key, res)

判断下是不是开启了缓存, 并且接口指定缓存的话, 将 api 返回的数据, 写入缓存

注意:

这个 api 会处理所有的请求, 但是很多请求其实是不需要缓存的, 所以需要缓存可以在传过来的 data 里, 添加个 cache: true, 如:

api.post('/api/test', {a: 1, b:2, cache: true})

不需要缓存的直接按正常传值即可

以上是“Vue2中SSR如何缓存Api 数据”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Vue2中SSR如何缓存Api 数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android中如何加载数据缓存

最近app快完工了,但是很多列表加载,新闻咨询等数据一直从网络请求,速度很慢,影响用户体验,所以寻思用缓存来加载一些更新要求不太高的数据 首先做一个保存缓存的工具类import java.io.File; import java.io.I
2022-06-06

jquery 如何取缓存数据

在Web开发中, 缓存是提高应用程序性能的一个非常重要的方面。而在jQuery中,框架也提供了一些方便的方法来帮助我们获取缓存数据,这将使我们能够轻松地优化我们的应用程序。接下来,我们将学习如何使用jQuery的缓存方法来获取数据。使用jQuery的缓存方法来获取数据我们可以使用$.cache或$.data方法来获取缓存数据,下面是这两种方法的具体使用方法:1. 使用$.cac
2023-05-18

ehcache如何缓存大量数据

使用Ehcache缓存大量数据时,可以考虑以下几点:1. 设置合理的缓存容量:根据应用的实际情况,调整Ehcache的缓存容量,确保能够容纳大量数据。可以使用`maxEntriesLocalHeap`和`maxEntriesLocalDis
2023-08-26

数据缓存如何在Spring Boot中使用

数据缓存如何在Spring Boot中使用?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在实际开发中,对于要反复读写的数据,最好的处理方式是将之在内存中缓存一份,频繁的数据
2023-05-31

ehcache如何查看缓存数据

您可以使用以下方法来查看Ehcache中的缓存数据:1. 使用Ehcache的API查看缓存数据:您可以使用Ehcache的`Cache`对象来访问缓存数据。您可以通过调用`get(Object key)`方法来获取特定键的缓存值,并使用`
2023-09-13

PHP如何从Redis缓存中获取数据

要从Redis缓存中获取数据,可以使用PHP的Redis扩展提供的方法。下面是一个简单的示例代码:connect('127.0
PHP如何从Redis缓存中获取数据
2024-05-06

java代码Redis如何缓存数据

使用Redis可缓存数据,通过将数据存储在内存中,减少数据库查询数量,提高响应速度。实现步骤包括建立Redis连接、存储数据、获取数据、更新数据、删除数据。优点有提高性能、减少数据库负载、可扩展性、故障转移。局限性有数据丢失、缓存一致性、容量限制。示例代码展示了如何使用Java中的Redis缓存数据。
java代码Redis如何缓存数据
2024-04-02

如何将数据写入redis缓存

要将数据写入 redis 缓存,需要连接到服务器,使用 set 命令设置键值对,并可存储复杂结构。支持设置过期时间,并提供 nx 和 xx 选项处理冲突。同时,也可使用 mset 命令批量写入键值对。如何在 Redis 缓存中写入数据Re
如何将数据写入redis缓存
2024-04-20

redis如何读取最新缓存数据

可以通过多种方法获取 redis 中的最新缓存数据,包括 get(获取单个键)、mget(获取多个键)、scan(迭代所有键)、blpop/brpop(从列表弹出一个元素)和 pub/sub(订阅频道并接收通知)。选择使用哪种方法取决于具体
redis如何读取最新缓存数据
2024-04-20

Python如何操作Redis缓存数据库

本篇内容主要讲解“Python如何操作Redis缓存数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何操作Redis缓存数据库”吧!今天我们来学习如何使用Python操作Red
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录