vue依赖缓存_Vue SSR服务端渲染之数据缓存

当咱们在作vue的服务器端渲染时,可能会碰到各类各样的坑,内存泄露就是其中的一种。固然,致使内存泄露的缘由有不少,不合理使用Axios也是其中一种,那下面我给你们介绍一下如何有效的避免请求中的内存泄露。vue

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

npm install lru-cache --dev

2. api 配置文件

config-server.jsnode

var LRU = require('lru-cache')

let api

if (process.__API__) {

api = process.__API__

} else {

api = process.__API__ = {

api: 'http://localhost:8181/api/',

//配置缓存

cached: LRU({

max: 1000,

maxAge: 1000 * 60 * 15

}),

cachedItem: {}

}

}

module.exports = api

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 端和浏览器端分开封装ios

import config from './config-server.js'

const key = md5(url + JSON.stringify(data))

经过 url 和参数, 生成一个惟一的 keyajax

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 返回的数据, 写入缓存npm

注意:这个 api 会处理全部的请求, 可是不少请求实际上是不须要缓存的, 因此须要缓存能够在传过来的 data 里, 添加个 cache: true, 如:axios

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

不须要缓存的直接按正常传值便可api

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值