mirror of
https://github.com/DIYgod/RSSHub.git
synced 2025-12-12 08:10:32 +08:00
refactor(core): unified memory cache (#9395)
Signed-off-by: Rongrong <15956627+Rongronggg9@users.noreply.github.com>
This commit is contained in:
6
lib/middleware/cache/index.js
vendored
6
lib/middleware/cache/index.js
vendored
@@ -27,10 +27,10 @@ if (config.cache.type === 'redis') {
|
||||
globalCache.set = cacheModule.set;
|
||||
} else if (config.cache.type === 'memory') {
|
||||
cacheModule = require('./memory');
|
||||
const { pageCache } = cacheModule.clients;
|
||||
const { memoryCache } = cacheModule.clients;
|
||||
globalCache.get = (key) => {
|
||||
if (key && cacheModule.status.available) {
|
||||
return pageCache.get(key);
|
||||
return memoryCache.get(key, { updateAgeOnGet: false });
|
||||
}
|
||||
};
|
||||
globalCache.set = (key, value, maxAge) => {
|
||||
@@ -41,7 +41,7 @@ if (config.cache.type === 'redis') {
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
if (key) {
|
||||
return pageCache.set(key, value, { ttl: maxAge * 1000 });
|
||||
return memoryCache.set(key, value, { ttl: maxAge * 1000 });
|
||||
}
|
||||
};
|
||||
} else {
|
||||
|
||||
16
lib/middleware/cache/memory.js
vendored
16
lib/middleware/cache/memory.js
vendored
@@ -3,30 +3,24 @@ const config = require('@/config').value;
|
||||
|
||||
const status = { available: false };
|
||||
|
||||
const pageCache = new Lru({
|
||||
const memoryCache = new Lru({
|
||||
ttl: config.cache.routeExpire * 1000,
|
||||
max: config.memory.max,
|
||||
});
|
||||
|
||||
const routeCache = new Lru({
|
||||
ttl: config.cache.routeExpire * 1000,
|
||||
max: config.memory.max,
|
||||
updateAgeOnGet: true,
|
||||
});
|
||||
|
||||
status.available = true;
|
||||
|
||||
module.exports = {
|
||||
get: (key, refresh = true) => {
|
||||
if (key && status.available) {
|
||||
let value = (refresh ? routeCache : pageCache).get(key);
|
||||
let value = memoryCache.get(key, { updateAgeOnGet: refresh });
|
||||
if (value) {
|
||||
value = value + '';
|
||||
}
|
||||
return value;
|
||||
}
|
||||
},
|
||||
set: (key, value, maxAge = config.cache.contentExpire, refresh = true) => {
|
||||
set: (key, value, maxAge = config.cache.contentExpire) => {
|
||||
if (!value || value === 'undefined') {
|
||||
value = '';
|
||||
}
|
||||
@@ -34,9 +28,9 @@ module.exports = {
|
||||
value = JSON.stringify(value);
|
||||
}
|
||||
if (key && status.available) {
|
||||
return (refresh ? routeCache : pageCache).set(key, value, { ttl: maxAge * 1000 });
|
||||
return memoryCache.set(key, value, { ttl: maxAge * 1000 });
|
||||
}
|
||||
},
|
||||
clients: { pageCache, routeCache },
|
||||
clients: { memoryCache },
|
||||
status,
|
||||
};
|
||||
|
||||
@@ -27,7 +27,7 @@ module.exports = async (ctx) => {
|
||||
if (!data) {
|
||||
const res = await got.get(url);
|
||||
data = res.data;
|
||||
ctx.cache.set(url, data, config.cache.contentExpire, false);
|
||||
ctx.cache.set(url, data, config.cache.contentExpire);
|
||||
}
|
||||
|
||||
const $ = cheerio.load(data, { xmlMode: true });
|
||||
|
||||
@@ -130,7 +130,7 @@ module.exports = async (ctx) => {
|
||||
const token = rep.data.access_token;
|
||||
const uid = rep.data.uid;
|
||||
const expires_in = rep.data.expires_in;
|
||||
await ctx.cache.set('weibotimelineuid' + uid, token, expires_in, false);
|
||||
await ctx.cache.set('weibotimelineuid' + uid, token, expires_in);
|
||||
|
||||
ctx.set({
|
||||
'Content-Type': 'text/html; charset=UTF-8',
|
||||
|
||||
@@ -62,7 +62,7 @@ module.exports = async (ctx) => {
|
||||
}
|
||||
if (!noRefresh) {
|
||||
noRefresh = '0';
|
||||
await ctx.cache.set('noRefreshCache', '1', undefined, false);
|
||||
await ctx.cache.set('noRefreshCache', '1', undefined);
|
||||
}
|
||||
item.push({
|
||||
title: 'Cache Title',
|
||||
|
||||
Reference in New Issue
Block a user