2013-04-02 5 views
6

हर बार जब मैं एक साइट रीफ्रेश करता हूं और इसके पेज स्रोत को देखता हूं, जावास्क्रिप्ट स्रोत i.e js.js?version=1364903356; संस्करण संख्या हमेशा बदलती है।व्हा jajs का संस्करण क्या है? संस्करण = 1364903356 वेबपृष्ठ में?

मेरा प्रश्न है: इस संख्या का अर्थ क्या है; और यदि मैं प्रत्येक पृष्ठ में js.js डालता हूं, तो साइट काम नहीं कर रही है।

+0

क्या आप उस साइट को एक लिंक प्रदान कर सकते हैं। यह संख्या ब्राउज़र से "js.js" फ़ाइल को डाउनलोड करने के लिए मजबूर करने का तरीका है और इसकी कैश की गई प्रति का उपयोग नहीं करती है। इसे पढ़ें http://www.impressivewebs.com/force-browser-newest-stylesheet/ – vdua

+0

यह प्रश्न भी पढ़ें http://stackoverflow.com/questions/118884/what-is-an-elegant-way-toforce -ब्रोसर-टू-रीलोड-कैश्ड-सीएसएस-जेएस-फाइल – vdua

+0

[लिंक] (http://tokiolab.it) –

उत्तर

8

संस्करण आम तौर पर कैश को अमान्य करने के लिए कैशिंग उद्देश्यों के लिए जोड़ा जाता है, या इसके बजाय, संस्करण संख्या को बदलकर, और इसलिए अनुरोध किया गया URL), इसलिए इसे नए संसाधनों के रूप में देखा जाता है और फिर से डाउनलोड किया जाता है।

+1

उत्तर के लिए धन्यवाद। –

2

संख्या शायद अर्थहीन है। यह लगभग निश्चित रूप से केवल यूआरएल में जोड़ा जा रहा है ताकि यूआरएल बदल जाए ताकि जेएस को कैश से नहीं लाया जा सके।

+1

उत्तर के लिए धन्यवाद। –

+0

वास्तव में अर्थहीन नहीं है, यह युग के बाद सेकेंड में व्यक्त किए गए टाइमस्टैम्प की तरह दिखता है ('1000' द्वारा मूल्य गुणा करके और इसे 'दिनांक()' कन्स्ट्रक्टर रिटर्न 'में दे रहा है' 02 अप्रैल 2013 13:49:16 GMT + 0200' मेरी मशीन पर)। –

+0

@ FrédéricHamidi - यह केवल इसे उत्पन्न करने के लिए उपयोग किए गए तर्क को समझाता है और इसे अद्वितीय बनाता है, यह इसे सार्थक नहीं बनाता है। – Quentin

1

यह सिर्फ avoid Caching purposes and request new each time के लिए है। जब भी आप एक ही सामग्री पर जाते हैं। यदि आप आईआईएस में स्थिर सामग्री कैशिंग सक्षम करते हैं, तो ब्राउज़र HTTP 304 को संसाधन में संशोधित स्थिति जारी नहीं करेगा।

आप क्रोम में देख सकते हैं। खुले डेवलपर टूल्स (एफ 12) फिर नेटवर्क टैब के लिए जाएं। आप इस तरह के अनुरोध शीर्षलेख में देखेंगे।

Request Method:GET 
Status Code:304 Not Modified 

आईआईएस/किसी भी वेब सर्वर निर्धारित wil सामग्री बदल गया है या एक ही सामग्री है या नहीं। यदि सामग्री कैश में रहने जैसा ही है तो यह नए अनुरोध को कम नहीं करेगा।

संस्करण संख्या, फ़ाइल नाम/यूआरएल/संसाधन को जोड़कर बदल दिया जाएगा। तो ब्राउज़र संसाधनों के लिए एक नया GET अनुरोध जारी करेगा।

1

यह एक आम तकनीक है जो जावास्क्रिप्ट और अन्य फ़ाइलों को कैश करने या प्रबंधित करने के लिए उपयोग की जाने वाली एक आम तकनीक है जो ब्राउजर सामान्य रूप से कैश करेगा।

यदि संस्करण संख्या हमेशा बदलती है, तो इसका मतलब है कि प्रश्न वाला पृष्ठ आपके ब्राउज़र को फ़ाइल को कैशिंग करने से रोक रहा है; प्रत्येक अनुरोध फाइल की एक नई प्रति लोड करेगा चाहे वह बदल गया हो या नहीं।

यह खराब अभ्यास है, और संभावित रूप से साइट की गलत कॉन्फ़िगरेशन के कारण।

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

इस तकनीक के बिना, एक ब्राउज़र जो पहले से ही फ़ाइल के पुराने संस्करण को कैश कर चुका है, यह नहीं पता कि फ़ाइल अद्यतन हो गई है, और अद्यतन संस्करण नहीं ला सकता है। इसका परिणाम पृष्ठ पर स्क्रिप्ट फ़ाइलों के बीच संस्करण संघर्ष हो सकता है।

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

हालांकि, कुछ मामलों में तकनीक आवश्यक है क्योंकि कुछ ब्राउज़र और/या वेब सर्वर कॉन्फ़िगरेशन मानक विधि के साथ सही ढंग से काम नहीं कर सकते हैं, और ब्राउज़र अभी भी कैश किए गए संस्करण का गलत उपयोग कर समाप्त हो सकता है।

इसलिए इस तकनीक को इसके लिए एक कार्य के रूप में देखा जा सकता है।

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