2012-08-24 39 views
14

पर घोषित किया गया है कि मैं कैश मेनिफेस्ट फ़ाइल के साथ खेल रहा हूं और इसे जिस पृष्ठ पर घोषित किया गया है उसे कैश करना बंद करने की कोशिश कर रहा हूं।एचटीएमएल 5 ऑफ़लाइन मैनिफेस्ट स्टॉप कैशिंग पेज

HTML5 Rocks

किसी भी पृष्ठ उपयोगकर्ता नेविगेट करता से शामिल है कि एक प्रकट परोक्ष एप्लिकेशन को कैश

ऐस में जोड़ दिया जाएगा करने के लिए। मैं चाहता हूं कि मैनिफेस्ट फ़ाइल विशिष्ट कलाकृतियों को कैश करे, जिनमें से एक मेरे ऑनलाइन सिंगल पेज ऐप एचटीएमएल का ऑफ़लाइन संस्करण है, लेकिन ऑनलाइन संस्करण को कैश नहीं करना है।

+0

मैं अभी भी एचटीएमएल 5 के लिए थोड़ा नया हूं, लेकिन मुझे हैरान है कि मैनिफेस्ट सहित पेज के कैशिंग को रोकने के लिए कोई अच्छी तरह से परिभाषित तरीका नहीं है। –

+0

हाँ मुझे भी। अगर मैनिफेस्ट फ़ाइल का अधिक प्रभाव पड़ा तो मैं इसे पसंद करूंगा, इसलिए केवल जो भी आप घोषित करेंगे उसे कैश किया जाएगा। इसे पृष्ठ से लिंक नहीं किया जाना चाहिए। यह बस छिपी हुई कार्यक्षमता है। – Greg

+0

मेरा पहला विचार "इसे नेटवर्क में जोड़ें: सेक्शन" था, लेकिन कुछ परीक्षणों के बाद यह काम नहीं करता है (कम से कम आईई में - जैसे ही मैंने काम नहीं किया था, मैंने एक मामले को चौंका दिया था)। मेरी राय में सिर्फ सादा गलत है - जो स्पष्ट रूप से घोषित किया गया है वह हमेशा डिफ़ॉल्ट व्यवहार को ओवरराइड करना चाहिए। मैं इस तरह के मुद्दों की वजह से ऑफलाइन सामान का उपयोग करने के बारे में अभी भी बहुत टिकाऊ हूं। – Morvael

उत्तर

17

इस प्रकार मैंने समस्या हल की। मेरे मैनिफ़ेस्ट फ़ाइल

CACHE MANIFEST 
# Version 0.1 

CACHE: 
# Minimised Styles 
/css/style.0.1.min.css 

# Minimised JavaScript 
/js/script.0.1.min.js 

FALLBACK: 
//offline.html 

NETWORK: 
* 

नोट सब कुछ है कि mydomain.com/ को जाता है जब ऑफ़लाइन अब /offline.html (कैश से)

अब, के लिए जाना जाएगा तरीका बताया गया है केवल क्या कैश करने के लिए मेनिफेस्ट फ़ाइल में, mydomain.com/ पर ऑनलाइन पृष्ठ को शामिल किए बिना।

mydomain.com/

<iframe src="/offline.html" style="display: none;"></iframe> 

पर अपने पृष्ठ के तल पर निम्नलिखित आइफ्रेम रखो और offline.html में manifest="myapp.appcache" डाल दिया।

इसका मतलब है कि mydomain.com/ लोड हो गया है, यह कभी भी कैश नहीं होगा (क्योंकि पृष्ठ पर कोई प्रकट विशेषता नहीं है)। फिर ब्राउजर को iframe के माध्यम से ऑफ़लाइन.html मिल जाता है और HTML सब कुछ की विशेषता के कारण ऑफ़लाइन.html पृष्ठ सहित मैनिफेस्ट फ़ाइल में निर्देशों का उपयोग करके कैशिंग को अन्य सभी चीज़ों को जोड़ा जाता है।

एकमात्र ओवरहेड जो मैं देख सकता हूं वह पहले पृष्ठ लोड पर है, iframe एक अतिरिक्त HTTP अनुरोध करेगा, लेकिन एक बार इसे कैश करने के बाद यह इसे कैश से ले जाएगा, इसलिए बड़ी समस्या नहीं है।

+0

यह क्रोम के लिए काम करता प्रतीत होता है, लेकिन मुझे लगता है कि यह फ़ायरफ़ॉक्स v14.0.1 के लिए काम करने में सक्षम नहीं है। यह मुख्य अनुक्रमणिका.htm फ़ाइल के लिए नेटवर्क से सबकुछ प्राप्त करता रहता है (जिसमें एक मैनिफेस्ट विशेषता नहीं है - लेकिन ऑफ़लाइन एचटीएम फ़ाइल के साथ एक आईफ्रेम है जिसमें एक मैनिफेस्ट है)। – patorjk

+0

मेरे लिए काम करने लगता है ... – Greg

+0

एफएफ 15 में अपग्रेड करने के बाद यह मेरे लिए काम करना शुरू कर दिया है। सुनिश्चित नहीं है कि मेरे सेटअप में कुछ गड़बड़ है, लेकिन अब यह काम करता है। – patorjk