only-if-cached запрашивает у прокси сохранённый ответ
Запросите у сотрудничающего кэша HTTP существующий ответ и трактуйте 504 как промах кэша, а не как сетевой контроль исходящего трафика.
Для запроса, который должен использовать уже сохранённый ответ, HTTP определяет Cache-Control: only-if-cached.
Клиент может отправить его через кэширующий прокси HTTP:
curl --proxy http://127.0.0.1:3128 \
--header 'Cache-Control: only-if-cached' \
--include http://www.example.org/report
Кэш, соблюдающий эту директиву, должен вернуть сохранённый ответ, согласующийся с остальными ограничениями запроса, или 504 Gateway Timeout, если не может его удовлетворить. Здесь 504 может выражать политику кэша, а не неудачное TCP-соединение с прокси.
Директива не разрешает автоматически устаревшее содержимое. Свежесть, требования проверки и соответствующие поля Vary по-прежнему важны. Директива запроса no-cache может, наоборот, требовать успешной проверки на источнике перед повторным использованием.
Это также отличается от настройки офлайн-режима проверки кэша. only-if-cached переносится в отдельном запросе и выражает, что клиент готов принять.
Используйте кэш, который поддерживает такое поведение. Проигнорированная директива запроса не является межсетевым экраном, поэтому строгое предотвращение восходящего трафика требует независимо применяемой сетевой политики или политики сервера.
Обычный прокси HTTPS CONNECT не видит зашифрованные заголовки HTTP и не сохраняет объекты страниц из этого туннеля. В примере намеренно используется простой ресурс HTTP, который кэш может обработать.