Cache the heavy statistics lookup queries.

This commit is contained in:
Simon Lindh 2019-08-15 14:06:08 +03:00
parent 0fad0fbb42
commit 85f1d4d7aa
2 changed files with 30 additions and 21 deletions

View file

@ -253,11 +253,11 @@ class MempoolSpace {
.get(config.API_ENDPOINT + 'fees/recommended', routes.getRecommendedFees)
.get(config.API_ENDPOINT + 'fees/projected-blocks', routes.getProjectedBlocks)
.get(config.API_ENDPOINT + 'statistics/2h', routes.get2HStatistics)
.get(config.API_ENDPOINT + 'statistics/24h', routes.get24HStatistics)
.get(config.API_ENDPOINT + 'statistics/1w', routes.get1WHStatistics)
.get(config.API_ENDPOINT + 'statistics/1m', routes.get1MStatistics)
.get(config.API_ENDPOINT + 'statistics/3m', routes.get3MStatistics)
.get(config.API_ENDPOINT + 'statistics/6m', routes.get6MStatistics)
.get(config.API_ENDPOINT + 'statistics/24h', routes.get24HStatistics.bind(routes))
.get(config.API_ENDPOINT + 'statistics/1w', routes.get1WHStatistics.bind(routes))
.get(config.API_ENDPOINT + 'statistics/1m', routes.get1MStatistics.bind(routes))
.get(config.API_ENDPOINT + 'statistics/3m', routes.get3MStatistics.bind(routes))
.get(config.API_ENDPOINT + 'statistics/6m', routes.get6MStatistics.bind(routes))
;
}
}

View file

@ -3,36 +3,45 @@ import feeApi from './api/fee-api';
import projectedBlocks from './api/projected-blocks';
class Routes {
constructor() {}
private cache = {};
constructor() {
this.createCache();
setTimeout(this.createCache.bind(this), 600000);
}
private async createCache() {
this.cache['24h'] = await statistics.$list24H();
this.cache['1w'] = await statistics.$list1W();
this.cache['1m'] = await statistics.$list1M();
this.cache['3m'] = await statistics.$list3M();
this.cache['6m'] = await statistics.$list6M();
console.log('Statistics cache created');
}
public async get2HStatistics(req, res) {
const result = await statistics.$list2H();
res.send(result);
}
public async get24HStatistics(req, res) {
const result = await statistics.$list24H();
res.send(result);
public get24HStatistics(req, res) {
res.send(this.cache['24h']);
}
public async get1WHStatistics(req, res) {
const result = await statistics.$list1W();
res.send(result);
public get1WHStatistics(req, res) {
res.send(this.cache['1w']);
}
public async get1MStatistics(req, res) {
const result = await statistics.$list1M();
res.send(result);
public get1MStatistics(req, res) {
res.send(this.cache['1m']);
}
public async get3MStatistics(req, res) {
const result = await statistics.$list3M();
res.send(result);
public get3MStatistics(req, res) {
res.send(this.cache['3m']);
}
public async get6MStatistics(req, res) {
const result = await statistics.$list6M();
res.send(result);
public get6MStatistics(req, res) {
res.send(this.cache['6m']);
}
public async getRecommendedFees(req, res) {