2016-03-13 12 views
6

में एपकेच से सर्विसवर्कर में माइग्रेट करने के लिए एक अनुशंसित रणनीति है, मैं trip planning application पर काम कर रहा हूं जो appcache और localStorage के संयोजन के साथ ऑफ़लाइन समर्थन को कार्यान्वित करने के लिए उपयोग किया जाता है। जैसे ही सेवा कर्मचारी एक व्यवहार्य विकल्प बन गया, हमने इसका उपयोग करना शुरू कर दिया। क्रोम (क्रोमियम, ओपेरा इत्यादि) में संक्रमण के बिना संक्रमण चला गया लेकिन फ़ायरफ़ॉक्स (44 और 45 दोनों) कुछ मुद्दों को प्रस्तुत कर रहा है: फ़ायरफ़ॉक्स नए सेवा कार्यकर्ता को पंजीकृत करता है लेकिन पुराने पुराने अपहरण से पृष्ठों को अपने दायरे में लोड करता है।फ़ायरफ़ॉक्स

दूसरे शब्दों में, यदि आप हमारी वेबसाइट पर कभी भी ठोकर खाने के लिए भाग्यशाली नहीं हैं, और यदि आप इसे एफएफ 44/45 में पहली बार खोलते हैं, तो आपको एक नया चमकदार सेवा कर्मचारी मिल जाएगा जो देखभाल करता है आपकी सभी ऑफलाइन ज़रूरतें जीवन अनमोल है।

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

  1. तुम्हारा स्वागत पृष्ठ पर जाने - सेवा कार्यकर्ता सक्रिय हो जाता है और यह (माना जाता है कि) पूरे दायरे
  2. आप में प्रवेश करें, जो आप दप दायरे में पृष्ठों में से एक पुनर्निर्देश के लिए सब कुछ से निपटने की देखभाल (लेता है/ui) - यह अभी भी सेवा कार्यकर्ता द्वारा नियंत्रित किया जाना चाहिए, लेकिन इसके बजाय फ़ायरफ़ॉक्स अचानक पता चलता है कि यह है कि पुराने appcache है और यहां तक ​​कि नेटवर्क से कुछ भी लोड करने की कोशिश के बिना यह appcache से पुरानी सामग्री लोड करता है कि

मैं करूंगा इसके साथ ठीक है (हालांकि Mozilla docs के मेरे पढ़ने से मुझे पता चलता है कि स्कोप कॉन में एपकेच को अनदेखा किया जाना चाहिए सेवा कार्यकर्ता द्वारा ट्रोल किया गया) यदि यह केवल एक बार हुआ। अफसोस की बात है कि फ़ायरफ़ॉक्स यह भी जांचने के लिए एक मैनिफेस्ट प्राप्त करने का प्रयास नहीं करता है कि वह पुराना ऐप कैश अद्यतित है या नहीं। अगर इसे प्रकट करने का प्रयास किया गया है, तो उसे 404 प्राप्त होगा, जो एपकेच को अमान्य कर देगा (जैसा कि यह क्रोम पर था)। मुझे तार पर (या सर्वर की तरफ) कुछ भी नहीं दिख रहा है।

चोट का अपमान जोड़ने के लिए फ़ायरफ़ॉक्स कंसोल गर्व से उद्घोषित करता है: एप्लिकेशन कैश एपीआई (ऐप कैश) को बहिष्कृत किया गया है और भविष्य की तारीख में हटा दिया जाएगा। ऑफ़लाइन समर्थन के लिए ServiceWorker का उपयोग करने पर विचार करें। :-)

सरल रीफ्रेश (F5) सेवा कार्यकर्ता के माध्यम से पृष्ठ के वर्तमान संस्करण को लोड करता है। दुख की बात है कि यह केवल एक बार काम करता है। टैब को बंद करने और फिर से खोलने के बाद पूरा नृत्य खुद को दोहराता है: सेवा कर्मचारी कार्यकर्ता में उन सभी के अपवाद के साथ सभी पृष्ठों का ख्याल रखता है जो अपाचे मैच घोषणापत्र करते थे।

appcache (appcache clear डेवलपर कंसोल में या यूआई सेटिंग के माध्यम से) समाशोधन स्थिति में सुधार करता है, लेकिन मैं संभव नहीं हो सकता है कि यह हमारे सभी फ़ायरफ़ॉक्स उपयोगकर्ताओं के लिए सुझाव देते हैं।

मैंने फ़ायरफ़ॉक्स bugzilla कुछ भाग्य के बिना कुछ खोजने की कोशिश की। अगर कोई प्रासंगिक समस्या पा सकता है जो बहुत अच्छा होगा। अभी के लिए हमें अभी फ़ायरफ़ॉक्स के लिए एसडब्ल्यू समर्थन अक्षम करना पड़ा था।

क्या फ़ायरफ़ॉक्स को सिग्नल करने का कोई तरीका है कि सेवा कार्यकर्ता के दायरे में पुराने एप कैश को अनदेखा करना चाहिए?

+1

सिद्धांत रूप में, फ़ायरफ़ॉक्स ऐप कैश को अनदेखा करता है यदि कोई सेवा कर्मचारी पंजीकृत है, तो [1] और [2] देखें। क्या आप सुनिश्चित हैं कि सेवा कर्मचारी पृष्ठ को नियंत्रित कर रहा है? [1]: https://bugzilla.mozilla.org/show_bug.cgi?id=1163545 [2]: https://www.fxsitecompat.com/en-CA/docs/2015/application-cache- एपीआई-इन-डिम्रेक्टेड/ – Marco

+0

यूप। सिद्धांत में यह चाहिए। मुझे यकीन है कि सेवा कर्मचारी सक्रिय है: मैं 'सेवा: कार्यकर्ताओं' में पंजीकृत देख सकता हूं (एफ 5 चाल के काम के अलावा और तथ्य यह है कि एक बार जब मैं एपकेच हटा देता हूं)। मुझे लगता है कि इस मामले का क्रूक्स यह है कि यह पृष्ठ के दायरे में सक्रिय होने के बावजूद पृष्ठ ** को नियंत्रित नहीं करता है। यदि मैं समझता हूं कि इसके लिए एक सरल डेमो कैसे लिखना है, तो मैं ऐसा करूँगा: समस्या यह है कि जब आप एक ही ब्राउज़र में 'एपैचे' से 'सेवा कार्यकर्ता' से अपग्रेड करते हैं तो समस्या केवल तभी दिखाई देती है। – pirxpilot

उत्तर

-1

आप अपनी ऐप कैश .manifest फ़ाइल को क्यों संशोधित नहीं कर सकते? नया प्राप्त करने के लिए बस एक खाली फ़ाइल, या कचरा लिंक, या कुछ डमी पेज प्रदान करें। मैन्युअल स्वीकृत, और पुराना इतिहास होना चाहिए।

+0

यूप। कोशिश की यहां मुद्दा यह है कि एफएफ ने मैनिफेस्ट लाने का भी प्रयास नहीं किया था, लेकिन यह अभी भी पुरानी अपाचे का उपयोग कर रहा था। मैंने अपने प्रश्न में इसे स्पष्ट करने की कोशिश की जब मैंने लिखा: _Sadly फ़ायरफ़ॉक्स यह भी जांचने के लिए एक मैनिफेस्ट प्राप्त करने का प्रयास नहीं करता है कि यह पुराना ऐप कैश अद्यतित है या नहीं। इससे कोई फर्क नहीं पड़ता कि सर्वर किस प्रतिक्रिया का जवाब दे सकता है, अगर अनुरोध कभी नहीं होता भेज दिया। – pirxpilot