5

मैं templateUrl का उपयोग करता हूं और यह बहुत अच्छा काम करता है!अद्यतन कैश किए गए टेम्पलेट्स

app.directive('myDir', function() { 
    return { 
     templateUrl: 'partials/directives/template.html' 
    }; 
}; 

हालांकि ... जब मैं इन टेम्पलेट्स में परिवर्तन करता हूं तो यह अपडेट नहीं होता है। विकास में यह एक बड़ी समस्या नहीं है क्योंकि मुझे पता चला कि क्या अपडेट किया गया है और मैन्युअल रूप से कैश को साफ़ कर सकता है।

लेकिन मैं सभी उपयोगकर्ताओं के कैश को साफ़ नहीं कर सकता। क्या इसे करने का कोई तरीका है? कैच-कंट्रोल मेटाटैग या ऐसा कुछ उपयोग करने की तरह?

+0

कोणीय जेएस टेम्पलेट कैश को साफ़ किया जाता है जब आप ब्राउज़र को रीफ्रेश करते हैं। यदि आप अभी भी पुराने टेम्पलेट प्राप्त कर रहे हैं तो यह आंशिक कैशिंग ब्राउज़र के कारण है। जैसा कि आपने कहा था कि आपको कैश हेडर की जांच करने और उन्हें – Chandermani

+0

समायोजित करने की आवश्यकता है, मुझे यकीन नहीं है कि क्या जोड़ना है। क्या मैं index.html पर "नहीं कैश" जोड़ूं? या मैं इसे प्रत्येक आंशिक में जोड़ता हूं? मैंने यह भी ध्यान दिया कि सर्वर ईएजी मेटाडेटा भेज रहा है तो ब्राउजर (क्रोम) इसका उपयोग क्यों नहीं कर रहा है :(? –

+0

क्या आपको इस समस्या का समाधान मिला? यदि ऐसा है, तो कृपया साझा करें। – Troels

उत्तर

1

जहां तक ​​मैं देख रहा हूँ, आप दो विकल्प हैं -

  1. उपयोग $cacheFactory सेवा वर्ष कैश एक टेम्पलेट के बाद दूर करने के लिए प्राप्त किए गए किया गया है डिफ़ॉल्ट $ में, कोणीय कैश यह templateCache सेवाओं

    // Please note that $cacheFactory creates a default key '$http' 
    
    var cache = $cacheFactory.get('$http'); 
    
    // The remove() function removes a key-value pair from the cache, 
    // if it’s found. If it’s not found, then it just returns undefined. 
    
    cache.remove(your url); 
    
  2. फ़ाइल संस्करण फ़ाइल का उपयोग प्रत्येक परिवर्तन के साथ फ़ाइल का नाम बदलें - यानी यदि फ़ाइल का आपका पहला संस्करण टेम्पलेट-1.0.1.html है, तो जब आप कुछ कोड परिवर्तन करते हैं तो इसे टेम्पल में बदल दें एटी-1.0.2.html और इसी तरह से। इस तरह जब भी आप कुछ बदलाव करते हैं तो नई फ़ाइल डाउनलोड की जाएगी।

+0

धन्यवाद, लेकिन क्या कोई बेहतर तरीका नहीं है? आपके दोनों समाधान लक्षण को ठीक करने का प्रयास नहीं कर रहे हैं। जिस फिक्स को मैं ढूंढ रहा हूं वह यह है कि ब्राउज़र जानता है कि फ़ाइल को अद्यतन कर दिया गया है और फिर इसे प्राप्त करता है नया। मेटा ETAG का उपयोग कर। –

+0

एक और तरीका है - अपने टेम्पलेट्स जेएस फाइलों में स्टोर करें। वे कोणीय द्वारा कैश नहीं किया जाता है। – omickron

+0

यदि हम इस तरह के 'चाल' का जिक्र कर रहे हैं तो मुझे एक पुराना याद है जहां आपको टेम्पलेट फ़ाइल का नाम बदलने की आवश्यकता नहीं है, लेकिन आपको अनुरोध को बदलने की आवश्यकता है। तो यह 'templateUrl: 'tplFile.html? V = 20150503' जैसा होगा – george007

0

एक त्वरित और गंदे समाधान $httpProvider

app.config(function ($httpProvider) { 
    $httpProvider.defaults.headers.get = { 
     'Cache-Control': 'no-cache' 
    }; 
}); 

में कैशिंग निष्क्रिय करने के लिए मैं इस की सिफारिश नहीं होगा। लेकिन यह काम करता है।

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