2008-10-15 10 views
50

मेरे पास एक जावास्क्रिप्ट संसाधन है जिसमें किसी भी समय संपादित होने की संभावना है। एक बार इसे संपादित करने के बाद, मैं चाहता हूं कि यह उपयोगकर्ता के ब्राउज़र को अपेक्षाकृत तेज़ी से (जैसे 15 मिनट या उससे भी अधिक) तक प्रचारित किया जाए, हालांकि, इस संसाधन की संपादन की आवृत्ति कुछ और दूर (शायद 2 महीने) के बीच है।ब्राउज़र स्वचालित रूप से बाहरी जावास्क्रिप्ट फ़ाइल के कैश को साफ़ करता है?

मैं संसाधन में ब्राउज़र को कैश किया जाना चाहूंगा, क्योंकि इसे बार-बार पुनर्प्राप्त किया जाएगा, लेकिन मैं कैश को सेमी-नियमित अंतराल पर ब्राउज़र पर रीसेट करना भी पसंद करूंगा।

मुझे पता है कि जब मैं संसाधन के लिए अनुरोध करता हूं तो मैं नो-कैश हेडर पास कर सकता हूं, लेकिन मैं सोच रहा था कि कैश पास नहीं होने पर कैश स्वचालित रूप से ब्राउज़र पर रीसेट हो जाएगा।

मुझे लगता है कि यह प्रत्येक ब्राउज़र के लिए स्वतंत्र होगा, लेकिन मुझे यकीन नहीं है।

मैंने Google को यह करने का प्रयास किया, लेकिन मुझे मिली अधिकांश हिट ब्राउज़र के कैश को साफ़ करने के बारे में थीं ... जो मैं नहीं ढूंढ रहा हूं। जब आप एक परिवर्तन

<script src="/code.js?ver=123" type="text/javascript"></script> 

वे तो हमेशा नए संस्करण मिल जाएगा बनाने

उत्तर

53

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

आप संस्करण स्ट्रिंग हर बार जब आप स्रोत आप फाइल सिस्टम समय स्टाम्प के आधार पर यह गणना कर सकते हैं या अपने तोड़फोड़ संख्या प्रतिबद्ध संपादित आवंटित करने के लिए नहीं करना चाहते हैं:

<script src="/script.js?time_stamp=1224147832156" type="text/javascript"></script> 
<script src="/script.js?svn_version=678" type="text/javascript"></script> 

बेशक
+0

हाँ, यह वही है जो हम करते हैं। बाहरी सीएसएस फ़ाइलों के लिए वही बात। – dmercer

+0

svn_version = 678 कैश्ड के लिए जावास्क्रिप्ट है, या इसे हर बार फिर से लोड किया जाता है (कारण पैरामीटर प्राप्त किया जाता है)? – Beerweasle

+0

इस दृष्टिकोण का उपयोग रेल पर रूबी में भी किया गया था। – alessioalex

14

यह है कि अद्यतन किया जाता है की तरह अपने जावास्क्रिप्ट कोड पर एक संस्करण रखो।

+12

, जो मानता है कि एचटीएमएल भी कैश नहीं किया जा रहा है ...;) – RodeoClown

13

HTTP कैशिंग के लिए कई नियंत्रण प्रदान करता है जो ब्राउज़र विभिन्न तरीकों से अनदेखा करते हैं। यदि आप उचित समाप्ति तिथि निर्धारित करते हैं, तो अधिकांश ब्राउज़र यह देखने के लिए जांच करेंगे कि उनके पास वर्तमान संस्करण उचित आवृत्तियों हैं या नहीं।

खोज शब्द जिसे आप यहां शामिल करना चाहते हैं (ब्राउज़र उपयोगकर्ता निर्देशों से बचने के लिए) HTTP है।

और अधिक देखने के लिए:

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