Я думаю о наилучшем способе создания уровня кэша спереди или в качестве первого уровня для запросов GET для моего RESTful API (написанного на Ruby).
Не каждый запрос может быть кэширован, потому что даже для некоторых запросов GET API должен проверять запрашивающего пользователя/приложение. Это означает, что мне нужно настроить, какой запрос кэшируется, и как долго каждый кешированный ответ действителен. Для нескольких случаев мне нужно очень короткое время истечения, например. 15 с и ниже. И я должен иметь возможность истекать через кэширование приложений API, даже если дата истечения еще не достигнута.
Я уже думал о многих возможных решениях, моих двух лучших идеях:
-
первый уровень API (даже до маршрутизации), логика кэша сама (для всех параметров конфигурации в моей руке), ответы и дата истечения срока хранения, хранящиеся в Memcached
-
прокси-сервер webserver (с высокой степенью конфигурирования), возможно, что-то вроде Squid, но я никогда не использовал прокси-сервер для такого случая раньше, и я абсолютно не уверен в этом
Я также подумал о решении для кеша, таком как Varnish, я использовал Larnish для "обычных" веб-приложений, и это впечатляюще, но конфигурация является особенной. Но я бы использовал его, если бы это было самое быстрое решение.
Другая мысль заключалась в том, чтобы кэшировать индекс Solr, который я уже использую в слое данных, чтобы не запрашивать базу данных для большинства запросов.
Если у кого-то есть подсказка или хорошие источники, чтобы прочитать об этой теме, сообщите мне.