У меня есть приложение, которое часто извлекает удаленные веб-сайты (через cURL), и мне было интересно, какие у меня варианты кеширования этих HTTP-запросов. Например:Кэш удаленного доступа к веб-сайтам
application -->curl-->www.example.com
Вопрос заключается в том, что Curl можно назвать сотни раз в час, и каждый раз, когда нужно будет сделать сотни HTTP запросов, которые в основном то же самое. Итак, что я мог ускорить? Я экспериментировал с Traffic server, но был не очень доволен результатами. Я предполагаю, что кэширование DNS является обязательным, но что еще я могу сделать здесь? Система, на которой работает приложение, - CentOS.
Вы можете использовать файловую систему или базу данных и хранить там завиток. Дайте ему TTL и обновите, когда это необходимо. Очень распространенный сценарий, попробуйте просто кешировать «кеширование»? Вы спрашиваете конкретно, что использовать для слоя persistence? – ficuscr
Хорошо сохраняя ответ в базе данных, требуется изменение большого количества кода в приложении, которое не поддерживает какое-либо кеширование, поэтому я решил решить эту проблему на уровне ОС. Если бы я пошел в этом направлении (база данных), Memcached был бы хорошим местом для хранения HTTP-ответов и HTTP-заголовков? – Zed
Зависит от размера ответа HTML, который вы кешируете. Хранилища Key/Value, такие как memecache, не идеальны для хранения «больших» значений. Сложность добавления ввода-вывода с memcache vs RDBMS vs filesystem довольно похожа ... Может быть больше зависит от ... потребностей мьютекса, доступной памяти, других соображений, о которых вы знаете ... Используя файловую систему, вы всегда можете добавить что-то как [лак] (https://www.varnish-cache.org/) или Traffic Server сверху. – ficuscr