Кеширование API на следующую JS - PullRequest
0 голосов
/ 25 мая 2020

Я создаю приложение с помощью Next. js ... у нас более 100 тыс. Страниц, и содержимое меняется ежедневно, поэтому мы используем SSR и getServerSideProps.

Некоторые из наших данных поступают от автономного провайдера CMS, который взимает плату по запросу. Я хочу кэшировать ответы API с этого сервера на 24 часа.

Как лучше всего это сделать?

Есть ли общая библиотека, которую большинство людей использует для этого?

Просто ищу предложения подходов, которые я должен исследовать (или отличные примеры того, как это сделать).

Ответы [ 2 ]

1 голос
/ 25 мая 2020

Вы можете использовать getStaticProps из Next. js для SSG

У них в настоящее время есть свойство revalidate, которое вы можете возвращать, которое определяет, как часто следует обновлять контент. Это еще не официально выпущено, но вы можете использовать unstable_revalidate.

Взгляните сюда: https://nextjs.org/blog/next-9-3#next -gen-stati c -site-generation-ssg-support

1 голос
/ 25 мая 2020

Я использовал этот npm пакет: https://www.npmjs.com/package/memory-cache

А потом что-то вроде этого:

import cacheData from "memory-cache";

async function fetchWithCache(url, options) {
    const value = cacheData.get(url);
    if (value) {
        return value;
    } else {
        const hours = 24;
        const res = await fetch(url, options);
        const data = await res.json();
        cacheData.put(url, data, hours * 1000 * 60 * 60);
        return data;
    }
}

Тогда, если вы хотите получить что-то с помощью кеш просто вызовет эту функцию. Или его можно использовать как промежуточное ПО в запросах. Он проверяет, есть ли данные в кеше, и возвращает их, а если нет - помещает данные в кеш под ключом. Ключ может быть любым, например, я использую URL-адрес.

...