only-if-cached demande une réponse stockée au proxy
Demandez une réponse existante à un cache HTTP coopératif et interprétez un 504 comme un échec de cache, non comme un contrôle de sortie réseau.
Pour une requête qui doit utiliser une réponse déjà stockée, HTTP définit Cache-Control: only-if-cached.
Un client peut l'envoyer via un proxy cache HTTP :
curl --proxy http://127.0.0.1:3128 \
--header 'Cache-Control: only-if-cached' \
--include http://www.example.org/report
Un cache qui respecte cette directive doit renvoyer une réponse stockée compatible avec les autres contraintes de la requête, ou 504 Gateway Timeout lorsqu'il ne peut pas la satisfaire. Ici, un 504 peut exprimer la politique du cache plutôt qu'une connexion TCP défaillante au proxy.
La directive n'autorise pas automatiquement un contenu périmé. La fraîcheur, les exigences de validation et champs Vary correspondants comptent toujours. La directive de requête no-cache peut au contraire exiger une validation réussie auprès de l'origine avant réutilisation.
Cela diffère aussi du réglage d'un mode de validation hors ligne du cache. only-if-cached est porté par la requête individuelle et exprime ce que le client accepte de recevoir.
Utilisez un cache qui prend en charge ce comportement. Une directive de requête ignorée n'est pas un pare-feu : empêcher strictement le trafic sortant exige une politique réseau ou serveur appliquée indépendamment.
Un proxy HTTPS CONNECT ordinaire ne voit pas les en-têtes HTTP chiffrés et ne conserve pas les objets de page de ce tunnel. L'exemple utilise volontairement une ressource HTTP simple que le cache peut traiter.