డౌన్‌లోడ్ 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 అందిస్తుంది. ప్రాక్సీ ప్రామాణీకరణ లేకుండా అనుమతించిన పబ్లిక్ డౌన్‌లోడ్ ప్రయత్నించడానికి, opener లో HTTP ప్రాక్సీ జాబితా నుండి HTTP ఎండ్‌పాయింట్ అభ్యర్థిని ఉపయోగించండి; అభ్యర్థన క్యాష్ షరతు అలాగే ఉంటుంది. ఇది మూల వనరు URL ను ఉంచుతుంది మరియు అభ్యర్థన మార్గంలోని క్యాష్‌లను తిరిగి ఉపయోగానికి ముందు నిర్ధారించమని కోరుతుంది.

నిర్ధారణ నిల్వ చేసిన బైట్లను తిరిగి ఉపయోగించగలదు

no-cache పొందిన అనుగుణ క్యాష్ మూలంతో విజయవంతమైన నిర్ధారణ లేకుండా నిల్వ చేసిన ప్రతిస్పందన నుండి ఈ అభ్యర్థనను తీర్చలేదు. మూలం నిల్వ చేసిన ప్రాతినిధ్యం ఇంకా చెల్లుబాటు అవుతుందని నిర్ధారించగలదు, కాబట్టి ఆపరేషన్ మారని ఫైల్‌ను మూలం నుండి తిరిగి పంపాల్సిన అవసరం లేదు.

అభ్యర్థనలోని max-age=0 వయస్సు పరిమితిని తెలియజేస్తుంది. అప్లికేషన్ ఆ పరిమితి కంటే పాతది కాని ప్రతిస్పందనను కోరుకున్నప్పుడు ఇది ఉపయోగకరం, కానీ ఇది నిల్వ నిషేధం కాదు. ఇప్పుడే సృష్టించిన ప్రతిస్పందన దానిని తీర్చగలదు.

యాదృచ్ఛిక క్వెరీ పరామితిని జోడించడం వేరే లక్ష్య URI ను అడుగుతుంది. అది మరో క్యాష్ నమోదును సృష్టించవచ్చు లేదా అప్లికేషన్ ప్రతిస్పందనను కూడా మార్చవచ్చు. క్వెరీ పరామితిని వనరు ఉద్దేశించిన ఇంటర్‌ఫేస్‌లో భాగమైనప్పుడే ఉపయోగించండి.

సాధారణ HTTPS CONNECT కోసం, టన్నెలింగ్ ప్రాక్సీ TLS లోపల ఈ హెడర్‌ను చూడలేదు. విధానం అయినప్పటికీ మూలాన్ని మరియు డీక్రిప్ట్ చేసిన HTTP మార్పిడిని నిర్వహించే క్యాష్‌లను చేరుకోగలదు. నిల్వ చేసిన ప్రతిస్పందనను టన్నెల్‌కు ఆపాదించే ముందు అది నిజంగా ఎక్కడ ఉందో తనిఖీ చేయండి.

సంబంధిత వ్యాసాలు