Size: a a a

JavaScript fwdays

2020 August 08

ES

Evg Sevg in JavaScript fwdays
Если пользователь уже грузил,это апи, то он инфу копает из кэша, и не грузит сеть, т.к. инфа уже была загружена с этого апи.
источник

V

Viktor in JavaScript fwdays
кеширование можно реализовать на уровне абстракции работы с API. Сделать слой, который берет данные с АПИ и кеширует. Если нам нужно кеширование только в отдельном случае, то можно сделать небольшой декоратор под этот слой
источник

ES

Evg Sevg in JavaScript fwdays
Я такое накопал, https://web.dev/cache-api-quick-guide/ но сомневаюсь как правильно заюзать для реакта, кеш хранить в папке компонента в txt файле, который периодически чиститься через тайм аут? Ткните носом, или дайте ссылку на код на гите или битбакете. если кто то сталкивался с таким🤷‍♂️🤷‍♂️🤷‍♂️
источник

ES

Evg Sevg in JavaScript fwdays
Хлопцы я просто больше на расте пишу, мне эту задачу скинули, сказали шё разберешься...🤯
источник

V

Viktor in JavaScript fwdays
А нужно именно cache API? Я обычно в памяти приложения кеширую на более высоком уровне, этого обычно хватает для SPA.
источник

V

Viktor in JavaScript fwdays
Все обычно упирается в инвалидацию кеша. Если данные особо не меняются, то LRU Cache проще всего
источник

ES

Evg Sevg in JavaScript fwdays
Я с такой задачей раньше не сталкивался,т.к пишу низкоуровневый код то выбрал данный путь.🤓
источник

V

Viktor in JavaScript fwdays
Тогда вообще проблем не должн быть :) Просто реализуй свой слой кеширования, спрячь его за какой-то абстракцией или просто сделай деталью реализации REST API клиента
источник

ES

Evg Sevg in JavaScript fwdays
вы что такое имели ввиду class LRUCHACHE {
   constructor(max = 10) {
       this.max = max;
       this.cache = new Map();
   }

   get(key) {
       let item = this.cache.get(key);
       if (item) {
           // refresh key
           this.cache.delete(key);
           this.cache.set(key, item);
       }
       return item;
   }

   set(key, val) {
       // refresh key
       if (this.cache.has(key)) this.cache.delete(key);
       // evict oldest
       else if (this.cache.size == this.max) this.cache.delete(this.first());
       this.cache.set(key, val);
   }

   first() {
       return this.cache.keys().next().value;
   }
}
источник

ES

Evg Sevg in JavaScript fwdays
юзается так > let cache = new LRU(3)
> [1, 2, 3, 4, 5].forEach(v => cache.set(v, 'v:'+v))
> cache.get(2)
undefined
> cache.get(3)
"v:3"
> cache.set(6, 6)
> cache.get(4)
undefined
> cache.get(3)
"v:3"
источник

V

Viktor in JavaScript fwdays
Для LRU можно взять готовое типа - https://www.npmjs.com/package/lru-cache
источник

ES

Evg Sevg in JavaScript fwdays
А где кеш хранить в txt в этом же модуле?
источник

ES

Evg Sevg in JavaScript fwdays
сделать отельный модуль Rust API и там извращаться в нем хранить верстку данный кеша и все все ше относиться к этой задаче...🧐
источник

V

Viktor in JavaScript fwdays
Какая задача решается?)
источник

ES

Evg Sevg in JavaScript fwdays
В реакте как и в ноде также можно работать с кешом?🤷‍♂️
источник

ES

Evg Sevg in JavaScript fwdays
хранения поиск и обработка результатов апи запроса в кеше. Как паралельно делать запрос к апишкам от одного и того же пользователя?🤏🏼
источник

V

Viktor in JavaScript fwdays
Никак не могу понять в чем проблема :) JS асинхронный, в нем же не нужно ждать завершения одного реквеста, чтобы сделать другой. Пока один запрос отрабатывает, сделали второй. Если нужно их синхронизировать, то делаем что-то типа Promise.all
источник

ES

Evg Sevg in JavaScript fwdays
Вот еще нашел только это для ноды в реакте также? Или там свои навороты?🤏🏼🤷‍♂️
источник

ES

Evg Sevg in JavaScript fwdays
источник

ES

Evg Sevg in JavaScript fwdays
Viktor
Никак не могу понять в чем проблема :) JS асинхронный, в нем же не нужно ждать завершения одного реквеста, чтобы сделать другой. Пока один запрос отрабатывает, сделали второй. Если нужно их синхронизировать, то делаем что-то типа Promise.all
Сейчас с кешами разберусь и отвечу.Извините, за возможно глупый вопрос, насколько правильно использовать в реакте генераторы при работе с апи ?🤷‍♂️🤷‍♂️🤷‍♂️
источник