Как Falcor кеширует данные на стороне сервера?

Я понимаю, что на стороне клиента Falcor он кэширует данные в модели. На стороне сервера приложений нам необходимо реализовать маршруты с ошибками в качестве источника данных. Сохраняет ли Falcor данные на стороне сервера приложений? Если так, то как? Спасибо,

1 ответ

Короче нет, falcor-router не кеширует данные. Поскольку один запрос может быть разрешен несколькими маршрутами, маршрутизатор создает кэш для каждого запроса, но этот кэш сбрасывается после того, как маршрутизатор заканчивает отвечать на запрос.

Например, следующий запрос

method=get
paths=[
  items[0..10]['id', 'name'],
  items.length,
]

может быть решен двумя или тремя различными маршрутами, например

[items[{range}]]
[items.length]
[itemsById[{keys}]

Маршрутизатор будет объединять каждый ответ маршрута в фрагмент графа, пока он не разрешит все запрошенные пути и не проследит за всеми возвращенными узлами ref. Этот фрагмент графа можно рассматривать как кэш для каждого запроса (или, по крайней мере, он упоминается как таковой в исходном коде), но он отбрасывается после того, как ответ возвращается клиенту.

Это подразумевает несколько вещей:

  • сервер не знает, какие данные находятся на клиенте или нет
  • Фрагменты графика не материализуются, то есть, если выполнить один и тот же запрос дважды (при условии, что он не попадет в кэш вашей клиентской модели Falcor), будет выполнен тот же запрос.

Кэширование на стороне сервера и аннулирование кэша более целесообразно обрабатывать на уровне базы данных, а не на уровне маршрутизатора.

Другие вопросы по тегам