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 देता है। प्रॉक्सी प्रमाणीकरण के बिना अनुमत सार्वजनिक डाउनलोड आज़माने के लिए, opener में HTTP प्रॉक्सी सूची से HTTP एंडपॉइंट उम्मीदवार लें; अनुरोध की कैश शर्त वही रहती है। यह मूल संसाधन URL बनाए रखता है और अनुरोध पथ पर मौजूद कैश से पुनः उपयोग से पहले सत्यापन करने को कहता है।
सत्यापन संग्रहीत बाइट्स का पुनः उपयोग कर सकता है
no-cache पाने वाला अनुरूप कैश मूल के साथ सफल सत्यापन के बिना संग्रहीत प्रतिक्रिया से इस अनुरोध को पूरा नहीं कर सकता। मूल पुष्टि कर सकता है कि संग्रहीत निरूपण अब भी वैध है, इसलिए क्रिया को मूल से अपरिवर्तित फ़ाइल फिर से भेजने की ज़रूरत नहीं है।
अनुरोध का max-age=0 आयु-सीमा व्यक्त करता है। यह तब उपयोगी है जब एप्लिकेशन ऐसी प्रतिक्रिया चाहता है जो उस सीमा से पुरानी न हो, पर यह संग्रहण पर प्रतिबंध नहीं है। अभी बनी प्रतिक्रिया इसे पूरा कर सकती है।
यादृच्छिक क्वेरी पैरामीटर जोड़ना भिन्न लक्ष्य URI माँगता है। इससे दूसरी कैश प्रविष्टि बन सकती है या एप्लिकेशन की प्रतिक्रिया भी बदल सकती है। क्वेरी पैरामीटर तभी इस्तेमाल करें जब वह संसाधन के इच्छित इंटरफ़ेस का हिस्सा हो।
सामान्य HTTPS CONNECT के लिए, टनलिंग प्रॉक्सी TLS के भीतर यह हेडर नहीं देख सकता। नीति फिर भी मूल और डिक्रिप्ट किए गए HTTP आदान-प्रदान को संभालने वाले कैश तक पहुँच सकती है। संग्रहीत प्रतिक्रिया को टनल को जिम्मेदार ठहराने से पहले जाँचें कि वह वास्तव में कहाँ रहती है।