डाउनलोड 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 देवघेव हाताळणाऱ्या कॅशेपर्यंत पोहोचू शकते. साठवलेला प्रतिसाद टनेलला जबाबदार धरण्यापूर्वी तो प्रत्यक्षात कुठे आहे ते तपासा.

संबंधित लेख