2015-01-12 8 views
5

के लिए स्पष्ट कैश क्लासपाथ से .js फ़ाइल लोड करने के लिए मेरे एप्लिकेशन में @JavaScript एनोटेशन है।वाडिन @ जावास्क्रिप्ट: अद्यतन जेएस फ़ाइल

अब मैंने फ़ाइल में अपडेट किया है और फिर से तैनात किया है (स्थानीय रूप से), लेकिन मुझे हमेशा पुराना संस्करण वापस मिलता है। मैंने सब कुछ पुनः लोड करने का प्रयास किया है (ctrl + r, ctrl + F5) लेकिन यह काम नहीं करता है और मैं नहीं चाहता कि उपयोगकर्ताओं को ऐसा करना पड़े।

अतीत में उपयोग किए गए एक चाल (वाडिन के बिना) संस्करण के साथ एक अनुरोध पैरामीटर जोड़ना था (उदा।? संस्करण = 1) और अपडेट करें ताकि यूआरएल बदल जाए। लेकिन स्पष्ट रूप से @JavaScript एनोटेशन के लिए अनुमति नहीं है (वाडिन फ़ाइल लोड करने का भी प्रयास नहीं करता है)।

+0

शायद आपका ऐप यूआई ऑब्जेक्ट पर @PreserveOnRefresh एनोटेशन का उपयोग कर रहा है? यह वाडिन को किसी भी जेएस को पुनः लोड करने से रोक सकता है। –

+0

नहीं, मैं @PreserveOnRefresh का उपयोग नहीं कर रहा हूं। इसके अलावा, मैंने सर्वर को पुनरारंभ किया था जिससे इससे कोई फर्क नहीं पड़ता। मैंने वर्तमान में फ़ाइल नाम बदल दिया है (जोड़ा _vxxx जहां xxx एक संख्या है) और यह काम करता है। – herman

+0

तो आप कह रहे हैं, कि एक सर्वर भी पुनरारंभ "पुरानी" फ़ाइल रखता है? क्या आप अपने लक्ष्य-डीआईआर में फाइल के लिए 'ढूंढ' सकते हैं? हो सकता है कि यह कई बार है (उदा। एक बार आपके विचार से और एक बार आपके निर्माण उपकरण से)। यदि दोनों क्लासपाथ में हैं तो केवल एक ही उठाया जाता है। – cfrick

उत्तर

2

मैं Vaadin सर्वलेट विन्यास की resourceCacheTime पैरामीटर का उपयोग करके इस पर काबू पाने की है:

@VaadinServletConfiguration(ui = MyUI.class, resourceCacheTime = 0) 

हालांकि यह अपनी सीमा another question here करने के लिए अपने जवाब में वर्णित के रूप है।

1

यह स्थानीय रूप से कैश जेएस फाइलों के लिए ब्राउज़र सुविधा है, वाडिन के साथ कुछ भी नहीं करना है।

जैसा कि आप इसे स्वयं समझते हैं: यदि आप यह सुनिश्चित करना चाहते हैं कि उपयोगकर्ताओं के पास जेएस फ़ाइल का नवीनतम संस्करण है, तो आपको जेएस फ़ाइल का नाम बदलना चाहिए: script_buildNumber.js

+0

मैं इस बात से सहमत नहीं हूं कि इसका वाडिन से कोई लेना-देना नहीं है: ब्राउज़र अनुप्रयोगों को बताने के लिए वेब अनुप्रयोगों के तरीके हैं। कुछ संसाधनों को कैश नहीं करना है। मैं खुद फ़ाइल को नाम बदलने के जवाब के साथ आया लेकिन यह वास्तव में एक हैक है। कम से कम एक अनुरोध पैरामीटर जोड़ने में सक्षम होने से मुझे संस्करण नियंत्रण में फ़ाइल के वास्तविक नाम को बदलने से रोक दिया जाएगा। कंटेनर को पुनरारंभ करने के बाद – herman

+0

, नई फ़ाइल निश्चित रूप से डिस्क से ताजा लोड की जाती है और कम से कम FX में CTRL-F5 रीलोड डिफ़ॉल्ट कॉन्फ़िगरेशन में नई फ़ाइल खींचती है। – cfrick

0

क्रोम की गुप्त सुविधा का उपयोग करें (और मसालेदार/अप्रिय वेबसाइटों पर जाकर इसका उपयोग न करें)।

बस अपने ब्राउज़र को गुप्त मोड https://support.google.com/chrome/answer/95464?hl=en में खोलें और ब्राउज़र कुछ भी कैश नहीं करेगा।

अन्य ब्राउज़रों में यह सुविधा भी है (ओपेरा, आईई, फ़ायरफ़ॉक्स, सफारी)।

+0

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

+0

निश्चित रूप से, मैं आपसे सहमत हूं, मैंने सोचा कि आपको केवल विकास के लिए इसकी आवश्यकता है। – tonix

0

जैसा कि मैंने 12 जनवरी को इस प्रश्न पर मेरी टिप्पणी में उल्लेख किया था, फाइल का नाम बदलकर काम किया। यह वर्तमान में एकमात्र तरीका प्रतीत होता है, हालांकि यह आदर्श से बहुत दूर है।

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