Использование прокси для кэширования дорогостоящих исходящих HTTP-запросов?

Я использую довольно дорогой внешний API (есть цена за запрос), что делает тестирование кода, который его использует, нецелесообразным.

В идеальном мире у меня был бы прокси-сервер, на котором я бы выполнял свои запросы, который кэшировал бы каждый запрос (на основе URL + строки запроса) на неопределенный срок и попадал бы в фактический сервер API только тогда, когда я явно аннулирую кеш для данного запроса. Доступен ли такой сервер в готовом виде с минимальной конфигурацией?

Мой текущий стек — это Node.js, Docker, Nginx, PostgreSQL и AWS S3 (для не эфемерного состояния). Я думаю, что Varnish может выполнить то, что мне нужно, но я не уверен.


person Olivier Lalonde    schedule 19.05.2016    source источник
comment
Разве этот API не предоставляет бесплатную испытательную площадку?   -  person DaSourcerer    schedule 20.05.2016
comment
Нет, к сожалению... :/   -  person Olivier Lalonde    schedule 20.05.2016
comment
Звучит так, как будто это должно работать - в противном случае загляните в memcached - он делает именно это...   -  person Jensd    schedule 20.05.2016


Ответы (1)


Varnish может и выполнит это, но только если вы создадите «тестовый» API, который возвращает некоторые похожие данные, с которыми вы можете поиграть. Если вам нужно сэкономить деньги, лучше всего запросить API несколько раз, чтобы получить разные типичные ответы. Как только вы поймете, чего от него ожидать, создайте какой-нибудь фиктивный API или даже несколько статических файлов JSON или XML, которые вы сможете использовать для имитации. На этом этапе вы можете протестировать аннулирование Varnish и Cache, и я буду более чем счастлив помочь вам с синтаксисом для этого, учитывая некоторые примеры кода.

person Ray    schedule 20.05.2016
comment
Спасибо. В итоге я написал библиотеку, которая запоминает/кэширует вызовы API на стороне клиента для AWS S3. Просто откройте исходный код на самом деле github.com/blockai/persistent-memoize - person Olivier Lalonde; 21.05.2016