кэшируемый топ запрос

This commit is contained in:
Alexey Kasyanchuk 2017-11-10 18:32:14 +03:00
parent 8b9c1e3da4
commit 0f387df75a
2 changed files with 20 additions and 8 deletions

View File

@ -212,6 +212,11 @@ function baseRowData(row)
}
}
let topCache = {};
setInterval(() => {
topCache = {};
}, 24 * 60 * 60 * 1000);
io.on('connection', function(socket)
{
socket.on('recentTorrents', function(callback)
@ -445,17 +450,24 @@ io.on('connection', function(socket)
where = ' and `added` > DATE_SUB(NOW(), INTERVAL 30 DAY) '
}
}
mysqlPool.query(`SELECT * FROM torrents WHERE seeders > 0 and (contentCategory is null or contentCategory != 'xxx') ${where} ORDER BY seeders + leechers DESC LIMIT ${max}`, function (error, rows) {
const query = `SELECT * FROM torrents WHERE seeders > 0 and (contentCategory is null or contentCategory != 'xxx') ${where} ORDER BY seeders + leechers DESC LIMIT ${max}`;
if(topCache[query])
{
callback(topCache[query]);
return;
}
mysqlPool.query(query, function (error, rows) {
if(!rows || rows.length == 0) {
callback(undefined)
return;
}
let searchList = [];
rows.forEach((row) => {
searchList.push(baseRowData(row));
});
callback(searchList);
rows = rows.map((row) => {
return baseRowData(row);
});
topCache[query] = rows;
callback(rows);
});
});

View File

@ -47,14 +47,14 @@ export default class TopPage extends Page {
window.router('/')
}} />
{
this.types.map((type) => {
this.types.map((type, index) => {
const torrents = this.topTorrents[type];
if(!torrents)
return null;
return (
<List style={{paddingBottom: '70px'}} className='animated recent-torrents'>
<List key={index} style={{paddingBottom: '70px'}} className='animated recent-torrents'>
<Subheader inset={true}>
{
this.descriptions[type]