Loopback имеет концепцию non-database connectors, включая REST connector.Кэширование Loopback REST-коннектор
Каков правильный способ кэширования получить запросы к такому источнику данных?
Loopback имеет концепцию non-database connectors, включая REST connector.Кэширование Loopback REST-коннектор
Каков правильный способ кэширования получить запросы к такому источнику данных?
Интересная мысль ... Я думаю, что вы должны сделать это самостоятельно, создав новый custom remote method и проверить локальный хэш значений:
// in /common/models/myModel.js
var cache = {};
MyModel.lookup = function loopkup(someParam, next) {
if (cache[someParam]) {
// first see if the value is already in the cache
return next(null, cache[someParam]);
} else {
// otherwise do the REST remote method call...
MyModel.restLoopkup(someParam, function lookupCallback(err, data) {
if (err) { return next(err); }
cache[someParam] = data; // ...and then set the new cache value.
next(null, data);
});
};
MyModel.remoteMethod(
'lookup',
{
accepts: { arg: 'param', type: 'object', http: { source: 'query' } },
returns: { arg: 'results', type: 'object' },
http: { verb: 'get', path: '/lookup' }
}
);
Этот код будет создать конечную точку в .../api/MyModels/lookup?param=foobar
для вызывающий код для удара. Обратите внимание, что вы, вероятно, захотите также установить время истечения срока для данных и правильно управлять «кешем». Вы также можете использовать что-то вроде хранилища redis для значений вместо встроенной памяти, как это было сделано выше.
Удачи вам!
Считаете ли вы, что было бы легко реализовать глобальный очиститель кэша после любого обновления/создания ModelEntity? Я имею в виду предлагаемое решение. Большое спасибо. – F3L1X79
Легко? Может быть, нет ... но я бы, вероятно, использовал redis cache для этого. Особенно, когда вы загружаете кеш с другими данными. В конце концов, что загрузка памяти повлияет на ваше приложение и использование кеша redis сделает его гораздо более масштабируемым и управляемым. – jakerella
Если кто-то уже реализовал что-либо подобное, было бы замечательно поделиться им с сообществом, потому что я тоже ничего не мог найти об этом. – F3L1X79