mirror of
https://github.com/d0zingcat/NotionNext.git
synced 2026-05-13 23:16:47 +00:00
本地开发、开启文件缓存
This commit is contained in:
17
lib/cache/cache_manager.js
vendored
17
lib/cache/cache_manager.js
vendored
@@ -1,7 +1,14 @@
|
||||
import { getCacheFromMemory as getCache, setCacheToMemory as setCache, delCacheFromMemory as delCache } from '@/lib/cache/memory_cache'
|
||||
// import { getCacheFromFile as getCache, setCacheToFile as setCache, delCacheFromFile as delCache } from './local_file_cache'
|
||||
import MemoryCache from './memory_cache'
|
||||
import FileCache from './local_file_cache'
|
||||
const enableCache = true
|
||||
|
||||
let api
|
||||
if (process.env.ENABLE_FILE_CACHE) {
|
||||
api = FileCache
|
||||
} else {
|
||||
api = MemoryCache
|
||||
}
|
||||
|
||||
/**
|
||||
* 为减少频繁接口请求,notion数据将被缓存
|
||||
* @param {*} key
|
||||
@@ -11,7 +18,7 @@ export async function getDataFromCache(key) {
|
||||
if (!enableCache) {
|
||||
return null
|
||||
}
|
||||
const dataFromCache = await getCache(key)
|
||||
const dataFromCache = await api.getCache(key)
|
||||
if (JSON.stringify(dataFromCache) === '[]') {
|
||||
return null
|
||||
}
|
||||
@@ -22,12 +29,12 @@ export async function setDataToCache(key, data) {
|
||||
if (!enableCache || !data) {
|
||||
return
|
||||
}
|
||||
await setCache(key, data)
|
||||
await api.setCache(key, data)
|
||||
}
|
||||
|
||||
export async function delCacheData(key) {
|
||||
if (!enableCache) {
|
||||
return
|
||||
}
|
||||
await delCache(key)
|
||||
await api.delCache(key)
|
||||
}
|
||||
|
||||
8
lib/cache/local_file_cache.js
vendored
8
lib/cache/local_file_cache.js
vendored
@@ -6,7 +6,7 @@ const cacheInvalidSeconds = 1000000000 * 1000
|
||||
// 文件名
|
||||
const jsonFile = path.resolve('./data.json')
|
||||
|
||||
export async function getCacheFromFile (key) {
|
||||
export async function getCache (key) {
|
||||
const exist = await fs.existsSync(jsonFile)
|
||||
if (!exist) return null
|
||||
const data = await fs.readFileSync(jsonFile)
|
||||
@@ -33,7 +33,7 @@ export async function getCacheFromFile (key) {
|
||||
* @param data
|
||||
* @returns {Promise<null>}
|
||||
*/
|
||||
export async function setCacheToFile (key, data) {
|
||||
export async function setCache (key, data) {
|
||||
const exist = await fs.existsSync(jsonFile)
|
||||
const json = exist ? JSON.parse(await fs.readFileSync(jsonFile)) : {}
|
||||
json[key] = data
|
||||
@@ -41,10 +41,12 @@ export async function setCacheToFile (key, data) {
|
||||
fs.writeFileSync(jsonFile, JSON.stringify(json))
|
||||
}
|
||||
|
||||
export async function delCacheFromFile (key, data) {
|
||||
export async function delCache (key, data) {
|
||||
const exist = await fs.existsSync(jsonFile)
|
||||
const json = exist ? JSON.parse(await fs.readFileSync(jsonFile)) : {}
|
||||
delete json.key
|
||||
json[key + '_expire_time'] = new Date().getTime()
|
||||
fs.writeFileSync(jsonFile, JSON.stringify(json))
|
||||
}
|
||||
|
||||
export default { getCache, setCache, delCache }
|
||||
|
||||
8
lib/cache/memory_cache.js
vendored
8
lib/cache/memory_cache.js
vendored
@@ -3,14 +3,16 @@ import BLOG from 'blog.config'
|
||||
|
||||
const cacheTime = BLOG.isProd ? 10 * 60 : 120 * 60 // 120 minutes for dev,10 minutes for prod
|
||||
|
||||
export async function getCacheFromMemory(key, options) {
|
||||
export async function getCache(key, options) {
|
||||
return await cache.get(key)
|
||||
}
|
||||
|
||||
export async function setCacheToMemory(key, data) {
|
||||
export async function setCache(key, data) {
|
||||
await cache.put(key, data, cacheTime * 1000)
|
||||
}
|
||||
|
||||
export async function delCacheFromMemory(key) {
|
||||
export async function delCache(key) {
|
||||
await cache.del(key)
|
||||
}
|
||||
|
||||
export default { getCache, setCache, delCache }
|
||||
|
||||
Reference in New Issue
Block a user