2009-10-23 6 views
17

मुझे पता चला कि कुछ वेबसाइटें style.css?ver=1 जैसे सीएसएस टैग का उपयोग करती हैं। यह क्या है?style.css? Ver = 1 टैग क्या है?

?ver=1 का उद्देश्य क्या है?

मैं कोड में इसे कैसे कर सकता हूं?

उत्तर

27

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

+2

एक अतिरिक्त नोट के रूप में, आप संस्करण संख्या के बजाय अनुरोध का टाइमस्टैम्प जोड़ सकते हैं और पूरी तरह स्टाइलशीट के कैशिंग को बाईपास कर सकते हैं। यह प्रसंस्करण बढ़ता है, लेकिन कोड रखरखाव को कम करता है। –

+0

जिम के साथ सहमत हैं, मैं फ़ाइल का टाइमस्टैम्प व्यक्तिगत रूप से उपयोग करता हूं और इसका उपयोग करना बहुत आसान है। –

+0

क्या मैं समझ नहीं पा रहा हूं, या क्या आप _programming_ को कम करने के लिए, सर्वर लोड को कम करने के लिए पेश किए गए कैश को रोकने के लिए टाइमस्टैम्प का उपयोग करने का सुझाव दे रहे हैं? – Kheldar

4

के प्रयोजन? Ver = 1 सीएसएस फ़ाइल parameterize करने के लिए है, इसलिए जब वे एक नया style.css फ़ाइल वे संस्करण प्रकाशित और यह ग्राहक बलों बजाय कैश्ड से खींच के, नई फ़ाइल डाउनलोड करने के लिए संस्करण।

3

मुझे लगता है कि ?ver=1 संस्करण संख्या के लिए है। वेब ऐप का। प्रत्येक बार जब कोई नया निर्माण बनाया जाता है, तो ऐप नए संस्करण में ver अपडेट कर सकता है। ऐसा इसलिए है कि ब्राउज़र नई सीएसएस फ़ाइल लोड करेगा और कैश किए गए एक का उपयोग नहीं करेगा (दोनों अलग-अलग फ़ाइल नामों का उपयोग करें)।

आप इस साइट का उल्लेख कर सकते: '? Ver = 1' http://www.knowlegezone.com/36/article/Technology/Software/JavaScript/CSS-Caching-Hack----javascript-as-well

9

जोड़ा जा रहा है बनाता है अच्छी तरह से व्यवहार ब्राउज़रों (और प्रॉक्सी) मानकों के साथ किसी GET जिज्ञासा तथा जैसे HTTP अनुरोध नज़र पैरामिट्रीकृत प्रश्नों कैश करने के लिए मना कर देगा । बेशक अच्छी तरह से व्यवहार किए गए ब्राउज़र (और प्रॉक्सी) को 'कैश-कंट्रोल: नो-कैश', 'एक्सपेयर्स', 'लास्ट-संशोधित' और 'ईटाग' प्रतिक्रिया शीर्षकों पर भी ध्यान देना चाहिए (जिनमें से सभी को HTTP में जोड़ा गया था सही कैशिंग व्यवहार निर्दिष्ट करने के लिए)।

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

मेरी सिफारिश? ऐसा मत करो।

+0

"इसका मतलब है कि प्रत्येक पृष्ठ अनुरोध उस सीएसएस फ़ाइल का अनुरोध करने के लिए मजबूर हो रहा है" - नहीं, ऐसा नहीं है। यह क्यों होगा बस क्योंकि संसाधन का क्वेरी हिस्सा उपयोग किया जाता है? – bzlm

+2

मुझ पर विश्वास मत करो? विभिन्न ब्राउज़रों के साथ इसका परीक्षण करें। –

+0

क्या ऐसा इसलिए है क्योंकि ब्राउज़र एक parametrized क्वेरी कैश नहीं करेगा या हम वास्तव में सीएसएस में एक संस्करण संख्या डाल सकते हैं और इसे संख्या से कॉल कर सकते हैं उदा। ver = 1, ver = 2, ver = 3, या एक पुराना संस्करण कॉल करते समय एक नया संस्करण मौजूद है? – bjan

1

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

2

यदि आप एचटीएमएल और सीएसएस या किसी अन्य तकनीक में वेब एप्लिकेशन विकसित कर रहे हैं, और आप कुछ बाहरी सीएसएस या जेएस फाइलों का उपयोग कर रहे हैं, तो आप एक बात ध्यान दे सकते हैं कि कुछ मामलों में यदि आपने अपने मौजूदा .css में कोई बदलाव किया है या .js फ़ाइलें तब ब्राउज़र तुरंत परिवर्तनों को प्रतिबिंबित नहीं कर रहे हैं।

उस मामले में क्या होता है यह है कि ब्राउज़र .css और .js फ़ाइलों के नवीनतम संस्करण की ताजा प्रति डाउनलोड नहीं करता है, इसके बजाय यह आपके स्थानीय कैश में संग्रहीत फ़ाइलों का उपयोग करता है। नतीजतन आपके द्वारा हाल ही में किए गए परिवर्तन आपके लिए दृश्यमान नहीं हैं।

<link rel="stylesheet" href="style.css?v=1.1"> 

उपरोक्त मामले जब आप वेब पेज ब्राउज़र के साथ "? V = 1.1" के साथ "style.css" व्यवहार करेगा एक अलग फ़ाइल के रूप में लोड। इसलिए यदि स्टाइलशीट या स्क्रिप्ट फ़ाइल में ब्राउजर को ताजा प्रति डाउनलोड करने के लिए मजबूर किया जाता है।

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