Есть ли способ реализовать кэширование на стороне сервера с помощью Apollo-server 2.x? - PullRequest
0 голосов
/ 29 января 2019

В настоящее время я использую «GrandStack» для своего приложения.Проблема, с которой я сталкиваюсь с кешем. Я хочу поддерживать кеш как на стороне клиента, так и на стороне.

на клиенте:

Я использую ReactJs, Apollo-client: по умолчанию Apollo-client поддерживает хранилище на уровне приложения (обернуть все приложение клиентом, используя Apollo)

Que здесь .. Если я перейду на любую посещенную страницу, эти данные должнысервер из кеша даже при обновлении страницы

на сервере: Я использую Apollo-сервер 2 + экспресс + Neo4j в качестве БД

Есть лиспособ кеширования "клиентского запроса" на сервере?Если пользователь нажал на тот же запрос к серверу, что данные должны поступать из кэша сервера?

Пожалуйста, помогите мне предоставить некоторый ссылочный код. Спасибо заранее.

1 Ответ

0 голосов
/ 29 января 2019

Для того же сценария я реализовал кэш LRU, в котором я сохранил запрос в качестве ключа и ответ в качестве значения.

const LRU = require("lru-cache")

const lruCache = new LRU({
    maxElements: 1000,
    length: (n, key) => {
        return n * 2 + key.length
    },
    dispose: function (key, n) {
        // n.close()
    },
    maxAge: 1000 * 60 * 60
})

Чтобы установить значение lruCache.set(key, value) и получить const data = lruCache.get(key);

«ключ» - это ваш запрос.

Существуют и другие варианты, но они наиболее популярны(вот во что я верю)

URL - https://www.npmjs.com/package/lru-cache

...