Повторно валидирајте преземање преку прокси со Cache-Control: no-cache
Побарајте валидиран одговор без промена на URL-то за преземање и без мешање на ревалидацијата со забрана за складирање.
URL-то за преземање е точно, но заедничкото прокси сè уште има зачуван одговор. Ако операцијата бара одговор валидиран со изворот, ставете го тоа барање на самото барање:
from urllib.request import ProxyHandler, Request, build_opener
import shutil
opener = build_opener(ProxyHandler({
"https": "http://proxy.example:8080",
}))
request = Request(download_url, headers={"Cache-Control": "no-cache"})
with opener.open(request, timeout=15) as response:
shutil.copyfileobj(response, output)
Овој фрагмент претпоставува дека апликацијата поседува бинарен излезен тек и обезбедува HTTPS download_url. За да пробате дозволено јавно преземање без автентикација на прокси, користете кандидат за HTTP крајна точка од списокот со HTTP прокси во opener-от; барањето за кеш на барањето останува исто. Го задржува оригиналното URL на ресурсот додека бара од кешевите на патеката на барањето да валидираат пред повторна употреба.
Валидацијата може повторно да ги искористи зачуваните бајти
Соодветен кеш што прими no-cache не може да го задоволи ова барање од зачуван одговор без успешна валидација со изворот. Изворот може да потврди дека зачуваната репрезентација сè уште е валидна, па операцијата не мора повторно да пренесе непроменета датотека од изворот.
max-age=0 во барање изразува ограничување на староста. Корисно е кога апликацијата сака одговор што не е постар од тоа ограничување, но не е забрана за складирање. Одговор што штотуку е генериран може да го задоволи.
Додавањето случаен параметар за барање бара различно целно URI. Тоа може да создаде друг запис во кешот или дури да го промени одговорот на апликацијата. Користете параметар за барање само кога е дел од предвидениот интерфејс на ресурсот.
За обичен HTTPS CONNECT, тунелското прокси не може да го види ова заглавие внатре во TLS. Политиката сепак може да стигне до изворот и до кешевите што го обработуваат дешифрираната HTTP размена. Проверете каде навистина живее зачуваниот одговор пред да му го припишете на тунелот.