Как кэшировать ответ api с помощью curl, на основе возвращенного etag?

Это быстрый вопрос, который может помочь и другим.
У меня есть служба отдыха, которая вернет правильный заголовок ETAG для каждого запроса GET на его конечных точках.
Теперь мне также нужно создать завитый http-клиент для запроса этих конечных точек и использовать etags.
По моему мнению, после первого запроса с завитком мне нужно сохранить возвращенный etag для последующего использования, чтобы во всех последующих запросах (до тех пор, пока etag недействителен на сервере) я использую кешированную версию, потому что сервер вернет заголовок 304 и пустой ответ.
Это верно?

Имея в виду, что этот http-клиент будет распределен по многим серверам, и сам завиток не сможет сохранить возвращенный контент, я предполагаю, что мне нужно его самостоятельно сохранить, используя что-то вроде кэша sqlite или fs.
Это верно?

В основном, рабочий процесс, о котором я думаю, будет выглядеть так:
1. Сделайте первый запрос на завивание (GET) до конечной точки сервера
2. сервер возвращает http-код 200 с надлежащим etag и содержимым
3. используя этот ответ, который я получил от сервера, сохраните содержимое и etag с помощью sqlite или fs
4. Следующий вызов на ту же конечную точку, отправьте заголовок If-None-Match с значением etag
5. сервер проверяет заголовок If-None-Match
5.a – содержимое не было изменено, заголовок 304 отправлен обратно и ответа нет. Исходя из этого, я загружаю локальный кешированный контент из sqlite или fs.
5.b – содержимое было изменено, возвращается 200 заголовков вместе с новым этагом. Исходя из этого, я сохраняю новый etag и контент для следующего раза.
6. цикл повторяется

Это верно?