2010-08-02 5 views
6

जब सर्वर साइड कोड अपडेट किया गया है (जावास्क्रिप्ट से संबंधित) पुरानी जावास्क्रिप्ट फ़ाइलों को कैश से परोसा जाता है।कैश से सेवा की गई जावास्क्रिप्ट फ़ाइलों के साथ समस्या का समाधान कैसे करें?

मुझे ऐसे समाधान की आवश्यकता है जहां पुरानी जावास्क्रिप्ट फाइलें अपने नए संस्करणों में अपडेट हो जाएं। एक बार सर्वर पर फ़ाइलों को अद्यतन करने के बाद ब्राउज़र कैश (जावास्क्रिप्ट से संबंधित) को अमान्य करने की आवश्यकता है।

मुझे इस समस्या का निम्नलिखित समाधान मिला है।

var randomnumber=Math.floor(Math.random()*10000); 

var scriptfile='http://www.whatever.com/myjs.js?rnd='+randnumber; 

लेकिन मैं कैश को साफ़ करने की आवश्यकता है केवल जब वहाँ जावास्क्रिप्ट पर कुछ अद्यतन पेज के हर पुनः लोड करने पर फ़ाइलें है नहीं।

उत्तर

14

अधिकांश साइटों - स्टैक ओवरफ़्लो सहित - इस के लिए अपने संस्करण नियंत्रण प्रणाली से एक संशोधन संख्या का उपयोग करें:

var scriptfile='http://www.whatever.com/myjs.js?rnd='+revision_number; 

जब भी संशोधन परिवर्तन, ब्राउज़र एक 'नई' JavaScript फ़ाइल की ओर इशारा किया जाता है।

आप इसे कहीं भी केंद्रीय स्थान पर संस्करण संख्या निर्दिष्ट करके, और प्रत्येक स्क्रिप्ट कॉल में उस संस्करण संख्या को जोड़कर मैन्युअल रूप से भी कर सकते हैं। जब आप जावास्क्रिप्ट का एक हिस्सा अपडेट करते हैं, तो आप बस संस्करण संख्या में वृद्धि करते हैं।

एक तीसरा दृष्टिकोण जाँच आप भी शामिल कर रहे JavaScript फ़ाइलों से "अंतिम बार संशोधित" समय, और इसे से एक टाइमस्टैम्प निर्माण होगा:

var scriptfile='http://www.whatever.com/myjs.js?version=20100803'; 

लेकिन यह है कि सर्वर-साइड स्क्रिप्टिंग की आवश्यकता होगी और भी हो सकता है हर पृष्ठ अनुरोध पर महंगा है। एक यादृच्छिक संख्या का उपयोग कर के

7

इसके बजाय, एक संस्करण संख्या या अद्यतन टाइमस्टैम्प उपयोग करती हैं इसलिए हो जाता है:

var script = 'http://mysite.com/the_script.js?2010-08-02'; 

// or 

var script = 'http://mysite.com/the_script.js?v1.20'; 

आप इस मैन्युअल रूप से अद्यतन करने के लिए नहीं करना चाहते हैं, तो आप एक make स्क्रिप्ट कि खोज का उपयोग कर सकते के लिए और एक संस्करण संख्या के साथ एक टैग की जगह:

var script = 'http://mysite.com/the_script.js?{{script_update_date}}'; 

// have a shell script find and replace the above {{ }} tag with the date or such 
// when deploying to production 

या अगर अपने संस्करण नियंत्रण प्रणाली यह (SVN) की तरह आप इसे संशोधन नंबर से बदल इतना है कि यह जब एक नई स्क्रिप्ट में चेक किया गया है अद्यतन किया जाता है हो सकता है का उपयोग करता है

+0

@ पेक्का और जेसी ढिल्लों- आपके सुझाव के लिए बहुत बहुत धन्यवाद – Dora

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