मैं जीडब्ल्यूटी का उपयोग करके एक वेब ऐप विकसित कर रहा हूं और ब्राउज़र में app.nocache.js
फ़ाइल के कैशिंग के साथ पागल समस्या देख रहा हूं, भले ही वेब सर्वर ने फ़ाइल की एक नई प्रतिलिपि भेजी हो!ब्राउजर स्टॉप कैशिंग को कैसे रोकें GWT nocache.js
मैं ऐप संकलित करने के लिए ग्रहण का उपयोग कर रहा हूं, जो देव मोड में काम करता है। उत्पादन मोड का परीक्षण करने के लिए, मेरे पास एक वर्चुअल मशीन (ओरेकल वर्चुअलबॉक्स) है जो मेरे होस्ट मशीन (विंडोज 7) पर चल रहे उबंटू अतिथि ओएस के साथ है। मैं वीएम में lighttpd वेब सर्वर चला रहा हूँ। वीएम मेरी परियोजना की युद्ध निर्देशिका साझा कर रहा है, और वेब सर्वर इस डीआईआर की सेवा कर रहा है।
मैं क्रोम ब्राउज़र के रूप में उपयोग कर रहा हूं, लेकिन फ़ायरफ़ॉक्स में भी यही बात होती है।
- अनुप्रयोग के लिए वेब पेज खाली है:
यहाँ परिदृश्य है। क्रोम के "निरीक्षण तत्व" उपकरण से पूछें, ऐसा इसलिए है क्योंकि यह
6E89D5C912DD8F3F806083C8AA626B83.cache.html
लाने की कोशिश कर रहा है, जो मौजूद नहीं है (404 not found
)। - मैं युद्ध निर्देशिका की जांच करता हूं, और निश्चित रूप से पर्याप्त है, वह फ़ाइल मौजूद नहीं है।
- ब्राउज़र पर
app.nocache.js
वेब सर्वर (200 ओके) से को रेट किया गया था, क्योंकि सर्वर पर फ़ाइल ब्राउज़र कैश से नई थी। मैंने सत्यापित किया कि सर्वर द्वारा लौटाई गई नई फ़ाइल के लिए फ़ाइल आकार और टाइमस्टैम्प सही थे। (यह जानकारी सर्वर की HTTP प्रतिक्रिया के बारे में क्रोम रिपोर्ट है) हालांकि, यदि मैं ब्राउज़र पर
app.nocache.js
खोलता हूं, तो जावास्क्रिप्ट6E89D5C912DD8F3F806083C8AA626B83.cache.html
का जिक्र कर रहा है !!! ऐसा है, भले ही वेब सर्वर ने एक नयाapp.nocache.js
भेजा, ब्राउज़र ने इसे अनदेखा कर दिया है और इसकी कैश की गई प्रति का उपयोग करना जारी रखा है!गोटो Google-> ग्रहण में जीडब्ल्यूटी संकलन। पूरी चीज को दोबारा दोहराएं।
- युद्ध निर्देशिका में सत्यापित करें कि
app.nocache.js
ओवरराइट किया गया था और इसमें एक नया टाइमस्टैम्प है। - क्रोम से पृष्ठ को फिर से लोड करें और एक बार फिर सत्यापित करें कि सर्वर ने
app.nocache.js
पर 200 ओके प्रतिक्रिया भेजी है। - ब्राउज़र एक बार फिर
6E89D5C912DD8F3F806083C8AA626B83.cache.html
लोड करने का प्रयास करता है और विफल रहता है। ब्राउज़र अभी भीapp.nocache.js
की पुरानी कैश की गई प्रति का उपयोग कर रहा है। - युद्ध निर्देशिका में बात को पूरी तरह बनाया गया है कि कुछ भी नहीं
6E89D5C912DD8F3F806083C8AA626B83.cache.html
लिए बात कर रहा है
गलत क्या जा रहा है (खोजें और ग्रेप के माध्यम से)? ब्राउजर यह nocache.js
फ़ाइल कैशिंग क्यों कर रहा है, भले ही सर्वर इसे एक नई प्रति भेज रहा हो?
ब्राउज़र में पुनः लोड करने पर क्लिक करते समय HTTP अनुरोध/प्रतिक्रिया शीर्षलेख की एक प्रति यहां दी गई है। इस का पता लगाने में, सर्वर सामग्री पिछले प्राप्त के बाद से कंपाइल नहीं किया गया है (लेकिन ध्यान दें nocache.js का संचित संस्करण अभी भी गलत है!):
Request URL:http://192.168.2.4/xbts_ui/xbts_ui.nocache.js
Request Method:GET
Status Code:304 Not Modified
Request Headersview source
Accept:*/*
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:192.168.2.4
If-Modified-Since:Thu, 25 Oct 2012 17:55:26 GMT
If-None-Match:"2881105249"
Referer:http://192.168.2.4/XBTS_ui.html
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4
Response Headersview source
Accept-Ranges:bytes
Content-Type:text/javascript
Date:Thu, 25 Oct 2012 20:27:55 GMT
ETag:"2881105249"
Last-Modified:Thu, 25 Oct 2012 17:55:26 GMT
Server:lighttpd/1.4.31
बीटीडब्लू, यह http://stackoverflow.com/questions/3407649/stop-browser-scripts-caching-in-gwt-app जैसा लगता है लेकिन इसमें कोई ऐसी जानकारी नहीं थी जिसने मुझे इस समस्या को हल करने में मदद की। – jfritz42
क्या आपने https://developers.google.com/web-toolkit/doc/latest/DevGuideCompilingAndDebugging#perfect_caching पढ़ा था? –
हां, और ऐसा लगता है कि सही चीज हो रही है, क्योंकि वह पृष्ठ कहता है "एक अगर संशोधित-चूंकि fetch पर्याप्त है"। मैं क्रोम इंस्पेक्ट एलिमेंट टूल से बता सकता हूं कि ब्राउजर ने "अगर-संशोधित-चूंकि: थू, 25 अक्टूबर 2012 17:03:53 जीएमटी" जीईटी अनुरोध में भेजा, और सर्वर ने "अंतिम संशोधित: थू, 25" अक्टूबर 2012 17:55:26 जीएमटी " – jfritz42