2010-12-29 16 views
7

मेरे पास एक HTML5 ऐप है जो एक मैनिफेस्ट फ़ाइल के साथ ऑफ़लाइन कैशिंग का उपयोग करता है। कैश को अपडेट करने का एकमात्र तरीका सर्वर पर मैनिफेस्ट फ़ाइल में एक बदलाव है। मैं कैश की समाप्ति और अद्यतन लागू करने के एक प्रोग्रामेटिक तरीके की तलाश में हूं।एचटीएमएल 5 ऑफ़लाइन कैश प्रोग्रामेटिक समाप्ति

मैं spec के माध्यम से चला गया, खिड़की पर कुछ विधि की तलाश में। कैप्चरेशन कैश की अवधि समाप्त करने के लिए कैश। लेकिन कोई नहीं मिला। एक अद्यतन() विधि है, लेकिन यह केवल तभी अपडेट होगा जब कैश की समयसीमा समाप्त हो जाती है (यानी मैनिफेस्ट फ़ाइल में परिवर्तन होता है)। तो यह मदद नहीं करता है।

कोई भी एप्लिकेशन कैश की समाप्ति और डाउनलोड को मजबूर करने का प्रोग्रामेटिक तरीका जानता है?

+0

* सर्वर-साइड * प्रोग्रामेटिक तरीका पुराने मैनिफेस्ट फ़ाइल के लिए '404' सर्वर को सर्वर करना है। आपको एक मेनिफेस्ट फ़ाइल नाम का उपयोग करना चाहिए जिसमें एक संस्करण स्ट्रिंग है ताकि आपके पास अपने मैनिफेस्ट के पुराने संस्करणों को समाप्त करने की क्षमता हो। – meagar

उत्तर

2

AFAIK, manifest अद्यतन शुरू करने का एकमात्र माध्यम है। HTML5 Rocks वेब साइट में एक लेख है कि वार्ता के बारे में प्रोग्राम के रूप में तुरंत appCache.status में एक UPDATEREADY राज्य के लिए सुनने के बाद applicationCache.swapCache() फोन करके (एक manifest अद्यतन के बाद) कैश को अद्यतन करने की है।

मुझे यकीन है कि अगर पर्याप्त होगा नहीं कर रहा हूँ, लेकिन इसकी एक अच्छा पढ़ा ("कैश अद्यतन कर रहा है" के लिए नीचे स्क्रॉल) - http://www.html5rocks.com/tutorials/appcache/beginner/

2

यह सच है कि एक अद्यतन केवल एक "अद्यतन" प्रकट से शुरू हो रहा है फ़ाइल। लेकिन कुछ ब्राउज़र (एफएफ, क्रोम) मैनिफेस्ट फ़ाइल द्वारा संदर्भित सभी फाइलों की जांच नहीं करते हैं। उदाहरण के लिए jpg की जांच नहीं की जाएगी कि क्या सर्वर में नया है या नहीं। ऐसा लगता है कि ब्राउज़र की सामान्य कैशिंग नीति अद्यतन प्रक्रिया को प्रभावित करती है। कैश मैनिफेस्ट में मधुमक्खियों की सभी या कुछ फ़ाइलों को जांचने के लिए ब्राउज़र को मजबूर करने के लिए आपको HTTP शीर्षलेख में "फ़ाइलों को कैश-कंट्रोल: नो-कैश" के साथ टैग करना होगा।

आप कुकीज़ का उपयोग कर अद्यतन ऑपरेशन को नियंत्रित कर सकते हैं। यदि आपके पास एक सर्वरसाइड स्क्रिप्ट है जो कुकी कमांड का व्याख्या करती है तो आप ब्राउज़र को जावास्क्रिप्ट के माध्यम से अप्रचलित कैश सामग्री पर मजबूर कर सकते हैं। उदाहरण के लिए यदि क्लाइंट एक cache.update() को कुकी "cache_clear" सेट करता है, तो सर्वर प्रतिक्रिया कोड 404 के साथ उत्तर दे सकता है जिससे ब्राउज़र एप्लिकेशन कैश सामग्री को अप्रचलित कर देता है।

संबंधित मुद्दे