Vue SSR服務端渲染之資料快取
當我們在做vue的伺服器端渲染時,可能會碰到各種各樣的坑,記憶體洩露就是其中的一種。當然,導致記憶體洩露的原因有很多,不合理使用Axios也是其中一種,那下面我給大家介紹一下如何有效的避免請求中的記憶體洩露。
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: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 端和瀏覽器端分開封裝
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})
不需要快取的直接按正常傳值即可
相關文章
- Vue 服務端渲染(SSR)Vue服務端
- 實現SSR服務端渲染服務端
- 實現ssr服務端渲染demo服務端
- Vue/React 元件 PHP 服務端渲染(SSR)可行性分析VueReact元件PHP服務端
- React + Koa 實現服務端渲染(SSR)React服務端
- Inertia.js SSR | 讓 Laravel x Vue 實現服務端渲染JSLaravelVue服務端
- 普通vue-cli初始專案轉為服務端渲染SSRVue服務端
- Vue 服務端渲染 & 預渲染Vue服務端
- docsify 4.0 釋出,支援服務端渲染(SSR)服務端
- Vue 服務端渲染(SSR)、Nuxt.js – 從入門到實踐Vue服務端UXJS
- Vue 服務端渲染(SSR)、Nuxt.js - 從入門到實踐Vue服務端UXJS
- Vue 服務端渲染(SSR)、Nuxt2 - 從入門到實踐Vue服務端UX
- 深入學習Vue SSR服務端渲染 用Nuxt.js打造CNode社群Vue服務端UXJS
- React + Koa 實現服務端渲染(SSR) Part IIReact服務端
- React16.x中的服務端渲染(SSR)React服務端
- 對比分析--淺析SSR(服務端渲染)和SPA(客戶端渲染)服務端客戶端
- React服務端渲染(程式碼分割和資料預取)React服務端
- Vue 服務端渲染技術Vue服務端
- vue:服務端渲染技術Vue服務端
- 使用 Nuxt.js 快速搭建服務端渲染(SSR) 應用UXJS服務端
- 服務端渲染到前端渲染,再到“服務端渲染”服務端前端
- vue伺服器端渲染(SSR)實戰Vue伺服器
- 帶你走近Vue伺服器端渲染(VUE SSR)Vue伺服器
- nuxtjs+express+vue2+vuex搭建的服務端渲染(SSR)個人網站專案UXJSExpressVue服務端網站
- 服務端渲染中的資料獲取:結合 useRequestHeaders 與 useFetch服務端Header
- vue 服務端渲染折騰記錄Vue服務端
- 基於VUE的伺服器端渲染(SSR)Vue伺服器
- 仿掘金前臺 vue 服務端渲染(ssr)後臺 react (spa) 後臺服務是 koa 的一個專案Vue服務端React
- 3 分鐘搞定 Vue 2.0 服務端渲染Vue服務端
- 我很懶,什麼都沒留下系列 之 教你上手React服務端渲染(React SSR)&& HMRReact服務端
- 服務端渲染和客戶端渲染服務端客戶端
- Vue 使用預渲染代替 SSRVue
- Vue 3深度探索:自定義渲染器與服務端渲染Vue服務端
- react 服務端渲染React服務端
- webpack4、Koa配置Vue伺服器端渲染(SSR)WebVue伺服器
- Angular 6 服務端渲染之 udao 終章Angular服務端
- nuxt.js實現服務端渲染ssr (一)(環境配置、 多環境開發、程式守護、服務端映象)UXJS服務端
- 手把手教你搭建 Vue 服務端渲染專案Vue服務端