2011-06-14 16 views
9

जैसा कि आप सभी जानते हैं, आप एक Silverlight XAP पैकेज बना सकते हैं और इसे अपने HTML पृष्ठ या asp.net पृष्ठ पर ऑब्जेक्ट टैग का उपयोग करके संदर्भित कर सकते हैं।ब्राउज़र एक्सएपी पैकेजों के कैशिंग को कैसे संभालते हैं?

जब ब्राउजर सर्वर से एक्सएपी पैकेज डाउनलोड करता है तो पहली बार पृष्ठ उपयोगकर्ता द्वारा संदर्भित किया जाता है, यदि उपयोगकर्ता एक ही पृष्ठ को रीफ्रेश करता है, क्या यह एक ही एक्सएपी पैकेज को फिर से डाउनलोड करता है या यह कैश संस्करण का उपयोग करता है?

उपयोगकर्ता किसी अन्य पृष्ठ पर एक ही XAP पैकेज और XAP पैकेज का उपयोग करता है पहले से ही पिछले पृष्ठ उपयोगकर्ता पर था की वजह से डाउनलोड किया गया था पर जाता है तो ब्राउज़र संचित संस्करण इस्तेमाल किया या सर्वर और डाउनलोड करने के लिए जाना होता है यह फिर से?

ब्राउज़र संचय संस्करण हर समय उपयोग करता है, यह कैसे पता है जब कैश किए गए संस्करण और जब उपयोग करने के लिए के बाद से यह हो सकता है नए परिवर्तन के साथ पुनर्निर्माण XAP पैकेज के नए संस्करण का उपयोग करने के? क्या पैकेज के संस्करण संख्या के साथ इसका कुछ संबंध है?

उत्तर

9

XAP एक नियमित रूप से संसाधन फ़ाइल छवि (png/GIF/JPG के रूप में ही माना जाता है:

इस समान प्रश्न में कुछ अच्छा समाधान है कि अन्य तरीकों XAP सुनिश्चित करने के लिए कवर अद्यतन किया जाता है कर रहे हैं आदि)। जब तक इसकी HTTP कैश की स्थिति मेल नहीं खाती तब तक ब्राउज़र नई प्रति डाउनलोड नहीं करता है, जो इसे यहां समझाए जाने के दायरे से बाहर हैं। एकमात्र समाधान जिसे हमने अनुकूलित किया है, एक्सएपी के यूआरएल के बाद "टैग" जोड़ना है और टैग संस्करण संख्या को प्रतिस्थापित कर सकता है जो ब्राउज़र को फ़ाइल को फिर से डाउनलोड करने के लिए मजबूर करेगा।

.. इसलिए हम अपने यूआरएल को टैग की तरह

MySilverlightClient.xap?v1 
MySilverlightClient.xap?v2 

आदि तो भले ही वह वर्तमान संस्करण के लिए कैश किया गया है वहाँ कोई समस्या नहीं है, लेकिन जब एक नया संस्करण सर्वर साइड पर बदल गया है, हम बदल सकते हैं हमारी किसी अन्य चीज़ को टैग v1 टैग करें जो ब्राउजर को इसे एक नए यूआरएल के रूप में मानने के लिए मजबूर करेगा और इसे कैश किए जाने पर भी इसे फिर से लोड करेगा।

+0

आपको XAP का उपयोग करके सभी HTML फ़ाइलों में संस्करण टैग को अपडेट करना याद रखना होगा, अधिकतर समय में समस्या का अधिकतर हिस्सा नहीं है क्योंकि आप आमतौर पर इसे केवल एक HTML फ़ाइल में रखते हैं। आपके क्लाइंटबिन फ़ोल्डर पर कैश कंट्रोल हेडर को कॉन्फ़िगर क्यों नहीं करता है आपके लिए काम नहीं करता है? – AnthonyWJones

+0

मुझे कैश कंट्रोल हेडर को कॉन्फ़िगर करने में अधिक अनुभव नहीं है, क्या आप मुझे उस दिशा में इंगित कर सकते हैं जहां मैं और जान सकता हूं? – ActiveX

+0

यूआरएल के बारे में, इसलिए यदि मैं यूआरएल बदलता हूं तो आप कह रहे हैं कि ब्राउज़र कैश से इसका उपयोग करने के बजाय संसाधन को फिर से डाउनलोड करेगा? क्या यह इतना आसान है? – ActiveX

2

मैं आपके प्रश्न के पहले भाग का उत्तर दे सकता हूं, यह कि जब आप पृष्ठ को फिर से संपादित/रीफ्रेश करते हैं तो ब्राउज़र XAP की कैश की गई प्रति का उपयोग करता है। वास्तव में, ब्राउजर को एक नई प्रति डाउनलोड करने के लिए यह बहुत मजेदार हो सकता है!

प्रत्येक ब्राउज़र अलग-अलग व्यवहार करता है, ज़ाहिर है, आईई के साथ एक्सएपी को अद्यतन करने के बारे में सबसे जिद्दी होने लगती है जब स्रोत फ़ाइल बदल जाती है। चूंकि एंथनी टिप्पणियों में बताती है, ब्राउज़र की डिफ़ॉल्ट सामग्री फ़ाइल कैश हैंडलिंग के अनुसार एक्सएपी को किसी अन्य सामग्री फ़ाइल की तरह माना जा रहा है।

Making the Silverlight XAP file expire from browser cache programmatically

+2

आईई अपने नियम बना देता है यदि सर्वर इस बारे में स्पष्ट नहीं हो पाता है कि इसके कैशिंग व्यवहार की क्या आवश्यकता है। यदि सर्वर पहले स्थान पर सही कैश नियंत्रण शीर्षलेख प्रदान करता है तो अधिकतर ब्राउज़र लगातार लगातार व्यवहार करेंगे। अधिकांश "एक्सएपी कैशिंग" प्रश्नों का उत्तर "पीएनजी कैशिंग" प्रश्नों के समान ही है: समझें कि कैसे कैशिंग में HTTP में काम करता है। – AnthonyWJones

+0

@ एंथनी WJones धन्यवाद, समझ में आता है। –

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