2015-02-17 3 views
11

मैं सर्वर पर गल्प अधिकार के साथ स्रोत फ़ाइलों का निर्माण करके अपनी परियोजना को तैनात करता हूं। कैशिंग मुद्दों को रोकने के लिए, सर्वोत्तम अभ्यास यूआरएल का अनुरोध करने के लिए एक अद्वितीय संख्या जोड़ सकता है, देखें: Preventing browser caching on web application upgrades;gulp: ब्राउज़र कैश को रोकने के लिए अनुरोध करने के लिए स्वचालित रूप से संस्करण संख्या जोड़ें

एनपीएम रिपॉजिटरीज़ में, मुझे अनुरोध करने के लिए स्वचालित रूप से संस्करण संख्या जोड़ने के लिए कोई टूल नहीं मिला। मैं पूछ रहा हूं कि किसी ने पहले इस तरह के उपकरण का आविष्कार किया है या नहीं।

संभव कार्यान्वयन निम्नलिखित हो सकता है:

मैं src/ फ़ोल्डर में एक फ़ाइल index.html है, स्क्रिप्ट टैग

<script src="js/app.js<!-- %nocache% -->"></script> 

निम्नलिखित निर्माण यह dist/ फ़ोल्डर में प्रतिलिपि है के दौरान के साथ, और टिप्पणी बदल दिया जाता है autoincrement संख्या

<script src="js/app.js?t=1234"></script> 
+0

कैसे यू संस्करण संख्या के साथ टिप्पणी की जगह कर रहे हैं? – vini

उत्तर

3

ऐसा लगता है कि आपके पास कुछ विकल्प हो सकते हैं।

https://www.npmjs.com/package/gulp-cachebust https://www.npmjs.com/package/gulp-buster

आशा इस मदद करता है।

+2

मैंने गल्प-कैशबस्ट को देखा लेकिन ऐसा लगता है कि यह वास्तव में फ़ाइल नाम के लिए हैश जोड़ देगा, फिर नए हैश नाम वाले संस्करण से मेल खाने के लिए उस फ़ाइल के संदर्भों को बदलें। यदि यह सर्वर साइड बिल्ड स्क्रिप्ट (गिट के बाद) के रूप में कार्य चलाया जा रहा है तो यह ठीक से काम करेगा। लेकिन यदि आप इसे अपने सर्वर पर करने और अपलोड करने के परीक्षण के लिए पूर्व-तैनाती स्क्रिप्ट के रूप में चला रहे हैं, तो आपके पास आपके गिट रेपो में स्क्रिप्ट का प्रत्येक हैश संस्करण होगा। यह कैशबस्ट ओपी की सुझाई गई विधि के बजाय इस विधि का उपयोग क्यों करेगा? –

1

आप gulp-rev मॉड्यूल का उपयोग कर सकते हैं। यह फ़ाइलों में एक संस्करण संख्या जोड़ देगा, संस्करण फ़ाइल सामग्री का हैश है, इसलिए फ़ाइल बदलता है तो यह केवल तभी बदल जाएगा।

फिर आप फ़ाइल के बीच मैपिंग युक्त एक मेनिफेस्ट फ़ाइल आउटपुट करते हैं उदा। Scripts.js से Scripts-8wrefhn.js.

फिर सही मूल्यों को मैप करने के लिए पृष्ठ सामग्री लौटने पर एक सहायक कार्य का उपयोग करें।

मैंने उपरोक्त प्रक्रिया का उपयोग किया है। हालांकि एक और मॉड्यूल gulp-rev-all है जो गल्प-रेव का एक फोर्कड एक्सटेंशन है जो थोड़ा और करता है, उदा। पृष्ठों में फ़ाइल संदर्भों का स्वत: अद्यतन।

यहाँ प्रलेखन:

11

आप इस के लिए gulp-version-number उपयोग कर सकते हैं। यह यूआरएल के लिए तर्क जोड़कर, एचटीएमएल दस्तावेजों में लिंक्ड स्क्रिप्ट, स्टाइलशीट और अन्य फाइलों में वर्जन नंबर जोड़ सकता है। उदाहरण के लिए:

<link rel="stylesheet" href="main.css"> 

हो जाता है:

<link rel="stylesheet" href="main.css?v=474dee2efac59e2dcac7bf6c37365ed0"> 

तुम भी, एक प्लेसहोल्डर निर्दिष्ट करने के लिए की जरूरत नहीं है जैसे आप अपने उदाहरण कार्यान्वयन में पता चला है। और यह विन्यास योग्य है।

उदाहरण उपयोग:

const $ = gulpLoadPlugins(); 
const versionConfig = { 
    'value': '%MDS%', 
    'append': { 
    'key': 'v', 
    'to': ['css', 'js'], 
    }, 
}; 

gulp.task('html',() => { 
    return gulp.src('src/**/*.html') 
    .pipe($.htmlmin({collapseWhitespace: true})) 
    .pipe($.versionNumber(versionConfig)) 
    .pipe(gulp.dest('docroot')); 
}); 
+0

एचटीएमएल में इन जेएस और सीएसएस फ़ाइलों का उपयोग संस्करण संख्या के साथ कैसे कर रहे हैं? – vini

+1

@ विनी जो पहले से ही मेरे उत्तर का हिस्सा है; main.css के साथ उदाहरण देखें। आप बस सामान्य रूप से सीएसएस/जेएस शामिल करते हैं। – Serrano

+0

मैं अपने निर्माण के ठीक बाद इस कार्य को लागू करता हूं और यह एक आकर्षण की तरह काम करता है। – JLavoie

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

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