2016-02-16 5 views
5

सत्य पर EnableOptimisations सेट के साथ बंडल का उपयोग कर, उत्पादन URL को कैश से फ़ाइल लोड करता है, तो यह बदल गया है से ब्राउज़र को रोकने के लिए एक हैश के बिना पर्दाफाश।कैश Scripts.Render साथ लेकिन बंडल यूआरएल

@Scripts.Render("~/content/js/global") 

आउटपुट:

<script src="/content/js/global?v=PqstRRGF8qsUsJfHu6NBBBp6eDxYBz1JCbHY6CQJVks3"></script> 

हालांकि, हमारे आवेदन में कुछ फ़ाइलों को एक पृष्ठ के लिए विशिष्ट हैं। हम इन सीधे संदर्भ: जब हम इन फ़ाइलों में परिवर्तन जारी

@Scripts.Render("~/areas/areaname/content/js/page-name.js") 

इस मामले में उत्पादन यूआरएल हैश नहीं है और इसलिए कैश किया गया है, समस्याओं के कारण।

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

मैं बंडल के सभी स्क्रिप्ट और स्टाइल यूआरएल में वैश्विक रूप से हैश (या संस्करण संख्या) कैसे जोड़ सकता हूं?

उत्तर

5

मैं एक बिल्कुल अलग समाधान के साथ समाप्त हो गया, हालांकि, मैं एक विचार है कि मुझे मदद की है और उम्मीद है कि इस मदद करता है दूसरों गए हैं युक्त a question भर में ठोकर खाई है।

आप मैन्युअल रूप से डिफ़ॉल्ट टैग प्रारूपों की स्थापना की और संस्करण संख्या शामिल कर सकते हैं।

string versionNumber = "1.2.3.4"; // get from assembly or config setting 

Styles.DefaultTagFormat = string.Format("<link href='{{0}}?v={0}' rel='stylesheet'/>", versionNumber); 
Scripts.DefaultTagFormat = string.Format("<script src='{{0}}?v={0}'></script>", versionNumber); 

केवल समस्या जो मैं देख सकता हूं वह है यदि आपके यूआरएल में पहले से ही एक क्वेरीस्ट्रिंग है। यह एक दूसरे संलग्न करेंगे ? बल्कि एक & से।

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