आप फ़ायरफ़ॉक्स और सफारी को आइफ्रेम सामग्री को कैशिंग से कैसे रोक सकते हैं?
मेरे पास एक अलग वेब साइट पर एक iframe के साथ एक सरल वेब पेज है। कैशिंग को रोकने के लिए बाहरी पृष्ठ और आंतरिक पृष्ठ दोनों में HTTP प्रतिसाद हेडर है। जब मैं ब्राउज़र में "बैक" बटन पर क्लिक करता हूं, तो बाहरी पृष्ठ ठीक से काम करता है, लेकिन कोई बात नहीं, ब्राउज़र हमेशा iframed पृष्ठ के कैश को पुनर्प्राप्त करता है। IE ठीक काम करता है, लेकिन फ़ायरफ़ॉक्स और सफारी मुझे परेशानी दे रहे हैं।
मेरा वेबपेज कुछ इस तरह दिखता है:
<html>
<head><!-- stuff --></head>
<body>
<!-- stuff -->
<iframe src="webpage2.html?var=xxx" />
<!-- stuff -->
</body>
</html>
var
वैरिएबल हमेशा बदल जाता है। इस तथ्य के बावजूद कि iframe का URL बदल गया है (और इस प्रकार, ब्राउज़र को उस पृष्ठ पर एक नया अनुरोध करना चाहिए), ब्राउज़र केवल कैश्ड सामग्री प्राप्त करता है।
मैंने HTTP अनुरोधों और प्रतिक्रियाओं की जांच आगे-पीछे की है, और मैंने देखा कि भले ही बाहरी पृष्ठ सम्मिलित है <iframe src="webpage2.html?var=222" />
, ब्राउज़र फिर भी आएगा webpage2.html?var=111
।
यहाँ मैंने जो अभी तक कोशिश की है:
- यादृच्छिक URL मान के साथ iframe URL बदलना
- एक्सपायर, कैश-कंट्रोल और प्रागमा हेडर को बाहरी वेबपेज में जोड़ना
- एक्सपायर, कैश-कंट्रोल और प्रागमा हेडर को आंतरिक वेबपेज में जोड़ना
मैं कोई जावास्क्रिप्ट चाल करने में असमर्थ हूँ क्योंकि मैं उसी मूल नीति से अवरुद्ध हूँ।
मैं विचारों से भाग रहा हूं। क्या किसी को पता है कि iframed सामग्री को कैशिंग से ब्राउज़र को कैसे रोकें?
अपडेट करें
मैंने Fiddler2 को स्थापित किया क्योंकि डैनियल ने एक और परीक्षण करने का सुझाव दिया, और दुर्भाग्य से, मुझे अभी भी वही परिणाम मिल रहे हैं।
यह परीक्षण मैंने किया है:
- बाहरी पेज
Math.random()
जेएसपी में उपयोग करके यादृच्छिक संख्या उत्पन्न करता है । - बाहरी पृष्ठ वेबपृष्ठ पर यादृच्छिक संख्या प्रदर्शित करता है।
- रैंडम नंबर से गुजरते हुए, आउटर पेज कॉल करता है।
- भीतरी पृष्ठ यादृच्छिक संख्या प्रदर्शित करता है।
इस परीक्षण के साथ, मैं ठीक से देख पा रहा हूं कि कौन से पृष्ठ अपडेट हो रहे हैं, और कौन से पृष्ठ कैश हैं।
विजुअल टेस्ट
त्वरित परीक्षण के लिए, मैं पृष्ठ को लोड करता हूं, दूसरे पृष्ठ पर नेविगेट करता हूं, और फिर "वापस" दबाता हूं। यहाँ परिणाम हैं:
मूल पृष्ठ:
- आउटर पेज: 0.21300034290246206
- इनर पेज: 0.21300034290246206
पृष्ठ छोड़ना, फिर वापस मारना:
- बाहरी पृष्ठ: 0.4470929019483644
- इनर पेज: 0.21300034290246206
इससे पता चलता है कि आंतरिक पृष्ठ को कैश किया जा रहा है, भले ही बाहरी पृष्ठ URL में एक अलग GET पैरामीटर के साथ बुला रहा हो। किसी कारण से, ब्राउज़र इस तथ्य को अनदेखा कर रहा है कि आइफ्रेम एक नए URL का अनुरोध कर रहा है; यह बस पुराने को लोड करता है।
फिडलर टेस्ट
यकीन है कि काफी, Fiddler एक ही बात की पुष्टि करता है।
(मैं पृष्ठ लोड करता हूं।)
बाहरी पृष्ठ कहा जाता है। HTML:
0.21300034290246206
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.21300034290246206" />
http: //ipv4.fiddler: 1416 / page1.aspx? var = 0.21300034290246206 कहा जाता है।
(मैं पृष्ठ से दूर नेविगेट करता हूं और फिर वापस हिट करता हूं।)
बाहरी पृष्ठ कहा जाता है। HTML:
0.4470929019483644
<iframe src="http://ipv4.fiddler:1416/page1.aspx?var=0.4470929019483644" />
http: //ipv4.fiddler: 1416 / page1.aspx? var = 0.21300034290246206 कहा जाता है।
वैसे, इस परीक्षण से, ऐसा लगता है कि वेब ब्राउज़र पेज को कैशिंग नहीं कर रहा है, लेकिन यह आइफ्रेम के URL को कैशिंग कर रहा है और फिर उस कैश्ड URL पर एक नया अनुरोध कर रहा है। हालाँकि, मैं अभी भी इस मुद्दे को हल करने के लिए के रूप में स्टम्प्ड हूँ।
क्या किसी के पास आइफ्रेम यूआरएल को कैशिंग से वेब ब्राउज़र को रोकने के बारे में कोई विचार है?