Кэширование API отдыха, я должен использовать обратный прокси или мемкачу (D)?
-
30-09-2019 - |
Вопрос
У меня есть API отдыха, где я хотел бы кэшировать ответ JSON индекса (Get / Foo) и действия чтения (Get / Foo / 1), чтобы значительно повысить производительность. Когда есть пост или поставить на ресурс записи кэширования для индекса и результатов чтения, необходимо истекать, поэтому ни один старый контент не подается.
Это сценарий, который лучше всего сделать с обратным прокси, как SQUID / лак или выберете Memcache (D)?
Решение
Использование обратного прокси, который сидит на слое HTTP, больше прозрачный. Отказ Это означает, что можно увидеть, что происходит по проводу. Плохая вещь - это немногие из этих поддержд кэширование аутентифицированных ответов, Таким образом, их эффективность может упасть до 0, если ваши ресурсы требуют аутентификации. Обратные прокси также обычно не автоматически истекают ресурс A (/foo
) Когда этот совершенно не связанный ресурс B (/foo/1
) модифицирован. Это правильное поведение, которое вам придется как-то добавить в ваше решение.
Оба эти задачи могут быть решены, если вы используете MEMCACHED, так как он не имеет требований к прозрачности.
Другие советы
Я бы пошел на обратный прокси, как лак, потому что вы можете реализовать (и тестировать) ваш сервис без участия логики кэша и добавить кэширование в виде отдельного слоя. Вы можете обновить / перезапустить свой сервис, в то время как лак обслуживает старые результаты для получения запроса (отлично подходит для наличия), и легко настроить правила в лаком на немножественную (очистить) существующие результаты кэша на основе конкретных действий Get / Post.
Если вы хотите использовать распределенную память MEMCACHED - это хорошее решение. https://github.com/cpatni/middleman. это обратный прокси, который использует MEMCACHED для кэширования.