CSS और JS URL को संस्करण करने का सबसे अच्छा तरीका क्या है?


26

याहू की बहु-प्रचारित सर्वोत्तम प्रथाओं के अनुसार आपकी साइट को गति देने के लिए , हम एक सीडीएन से दूर-भविष्य के कैश एक्सपायर हेडर का उपयोग करके स्थिर सामग्री की सेवा करते हैं। बेशक, हमें कभी-कभी इन "स्थिर" फ़ाइलों को अपडेट करने की आवश्यकता होती है, इसलिए हम वर्तमान में फ़ाइल नाम (फ़ाइल सामग्री के SHA1 योग पर आधारित) के भाग के रूप में एक infix संस्करण जोड़ते हैं। इस प्रकार:

styles.min.css

हो जाता है:

styles.min.abcd1234.css

हालाँकि, संस्करणित फ़ाइलों का प्रबंधन थकाऊ हो सकता है, और मैं सोच रहा था कि क्या कोई GET तर्क संकेतन क्लीनर और बेहतर हो सकता है:

styles.min.css?v=abcd1234

आप किसका उपयोग करते हैं, और क्यों? क्या ब्राउज़र- या प्रॉक्सी / कैश-संबंधी विचार हैं, जिन पर मुझे विचार करना चाहिए?


मेरे द्वारा पूछे जाने का कारण यह है कि मुझे GET-तर्क शैली का उपयोग न करने का कारण याद नहीं है, लेकिन मुझे याद है कि क्यों नहीं।
डेविड आईके

क्या GET- तर्क का उपयोग किसी प्रकार की सर्वर साइड स्क्रिप्ट के साथ स्टाइलशीट की सेवा की आवश्यकता नहीं है (और यह अब स्थिर नहीं होगा)?
लोटस नोट्स

@ लोटस: आप जीईटी-दलीलें भेज सकते हैं और अगर कुछ नहीं खोज रहे हैं तो उन्हें चुपचाप नजरअंदाज कर दिया जाएगा।
डेविड आईके

जवाबों:


10

Google के मेक द वेब फास्टर के अनुसार , कई HTTP प्रॉक्सी द्वारा क्वेरी पैरामीटर वाले पृष्ठ कैश नहीं किए जाते हैं।

अधिकांश परदे के पीछे, संस्करण 3.0 के माध्यम से विशेष रूप से स्क्वीड, "" के साथ संसाधनों को कैश न करें? उनके URL में भले ही Cache-control: publicहेडर प्रतिक्रिया में मौजूद हो। इन संसाधनों के लिए प्रॉक्सी कैशिंग को सक्षम करने के लिए, स्थैतिक संसाधनों के संदर्भ से क्वेरी स्ट्रिंग्स को हटा दें, और इसके बजाय मापदंडों को फ़ाइल नामों में एनकोड करें।

तो styles.min.abcd1234.cssपसंदीदा उपाय है। पारदर्शी रूप styles.min.abcd1234.cssसे लागू करने के लिए आसान में बदलने के लिए आप एक उपयुक्त URL पुनर्लेखन तंत्र का उपयोग कर सकते हैं styles.min.css?v=abcd1234

यदि आप केवल HTTPS का समर्थन करते हैं, तो वह सलाह लागू नहीं होती है, क्योंकि प्रॉक्सी आमतौर पर उन पृष्ठों को कैश नहीं कर सकते हैं जो एसएसएल पर दिए गए हैं।


2
मुझे आश्चर्य है कि अगर क्वेरी स्ट्रिंग कैशिंग और प्रॉक्सी सर्वर के बारे में जानकारी थोड़ी दिनांकित है? Google के डॉक्स अब इस संदर्भ में क्वेरी स्ट्रिंग्स और प्रॉक्सी सर्वर का संदर्भ नहीं देते हैं। हालांकि उदाहरणों में अभी भी फ़ाइल नाम को बदलना शामिल है। स्क्वीड 2.7 (2008) और 3.1 (2010) कथित तौर पर डिफ़ॉल्ट रूप से क्वेरी स्ट्रिंग कैशिंग का समर्थन करते हैं, और इसके समर्थन के लिए पहले के संस्करणों को कॉन्फ़िगर किया जा सकता है।
Mrhhite

15

GET- शैली के संस्करण का उपयोग करते हुए, एक रिक्त कैश एकाधिक URL से - जैसे style.css?v=123और style.css?v=456- एक ही सामग्री लौटाएगा। हालाँकि, मैं यह नहीं देख सकता कि यह समस्याग्रस्त होगा, खासकर जब से आप एक समय में एक से लिंक करेंगे।

मुझे लगता है कि आपको GET- शैली को बनाए रखने में बहुत आसान लगेगा। आपको अलग-अलग फ़ाइलों की आवश्यकता नहीं है: बस URL और ब्राउज़र को बदलने से सीएसएस नए सिरे से आएगा।

अद्यतन: आगे के शोध में यह प्रतीत होता है कि क्वेरी स्ट्रिंग का उपयोग करने से फाइलों को कैशिंग करने वाले ब्राउज़र बंद हो सकते हैं । हालाँकि, यदि आप उचित शीर्ष लेख लौटा रहे हैं जैसे कि Expiresयह कोई समस्या नहीं है।

अद्यतन 2: स्वीकृत उत्तर बताता है कि कुछ प्रॉक्सी एक क्वेरी स्ट्रिंग के साथ फ़ाइलों को कैश नहीं करते हैं। हालाँकि यह पुरानी जानकारी पर आधारित है; स्क्वीड में जिस विशेष मुद्दे का वे उल्लेख करते हैं, वह 7 साल पहले तय किया गया था। प्रभावशाली वेब्स ने इस पर एक अच्छा लेखन किया


वह कैविएट जिसे मैं याद करने की कोशिश कर रहा था। लिंक के लिए धन्यवाद।
बजे डेविड आईके

1

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

मैं कहता हूं कि आपके लिए जो भी तरीका आसान हो उसे बनाए रखें।


0

यह उपरोक्त प्रश्न का उत्तर नहीं है , मैं एक बेहतर समाधान चाहता हूं इसलिए मैं यहां खुद से पूछ रहा हूं

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

वहाँ एक बेहतर तरीका है, जहां स्थिर फ़ाइलों के संस्करण अनुप्रयोग सर्वर को पुनः आरंभ करने के बिना संभाला जा सकता है?

समाधान में निम्नलिखित को खारिज किया गया है

  • सीएसएस और जेएस फ़ाइल नाम बदलना
  • url में क्वेरी paremeter पास करना

समाधान भी कैश-नियंत्रण या समय सीमा समाप्त करने को प्रभावित नहीं करना चाहिए।

धन्यवाद


1
ऐसा लगता है कि आप यहां नए हैं। यह अच्छा प्रश्न है। आपको इसे इस तरह पोस्ट करना चाहिए, शायद इस प्रश्न को संदर्भ के लिए वापस लिंक कर रहा है। मैंने इसे मध्यस्थता के लिए ध्वजांकित किया है ताकि वे आपकी सहायता कर सकें।
डेविड आइक

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

यह एक उपयोगी स्पष्टीकरण है। यदि आप अपनी स्टाइलशीट बदलते हैं, तो साइट पर सैकड़ों संदर्भों को अपडेट करने के बजाय, उसका नाम और संदर्भ रखना बेहतर होगा।
मार्क स्टोसबर्ग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.