दिलचस्प पोस्ट
मेल को नेटवर्क क्रैडेन्शियल के रूप में प्रेषण के रूप में सही रूप में कार्य नहीं करता नोटपैड ++ में प्रत्येक स्ट्रिंग में मौजूद सभी स्ट्रिंगों को कैसे बदल सकता है? लूपबैक में मेटा डेटा वाली फ़ाइलों को कैसे स्टोर करना है? कॉर और फोनगैप ऐप्स Gradle DSL विधि नहीं मिला: 'संकलन ()' एक यूडीपी सॉकेट के लिए स्रोत आईपी सेट करना इस वातावरण में कोई संकलक प्रदान नहीं किया गया है। शायद आप जेडीके की बजाय एक जेआरई पर चल रहे हैं? टी-एसक्यूएल में पिवट डेटा एक्लिप्से में बाहरी पुस्तकालय को कैसे ठीक करना है? एक एकल अक्षर स्ट्रिंग के रूप में टेक्स्ट फ़ाइल आयात करें एंड्रॉइड – एक सेवा के लिए शुरूआती भूमि का कार्यान्वयन? फोर्ट्रान में मॉड्यूल, सबरॉरीनेस और फ़ंक्शन का सही उपयोग क्या आईफोन एसडीके के लिए ओपनसीएल टेक्स्ट ड्राइंग लाइब्रेरी है? Uncaught सिंटेक्स त्रुटि: JSON.parse के साथ अनपेक्षित टोकन रिच टेक्स्टबॉक्स वाइफ़एफ बंधन

एंजरीजेएस देव मशीन पर आंशिक कैशिंग को अक्षम करता है

मुझे AngularJS में आंशिक कैशिंग के साथ समस्या है

मेरे HTML पृष्ठ में मेरे पास है:

<body> <div ng-view></div> <body> 

जहां मेरे आंशिक लोड होते हैं

जब मैं अपने आंशिक रूप से HTML कोड बदलता हूं, तो ब्राउज़र अभी भी पुराने डेटा लोड करता है।

क्या कोई वैकल्पिक हल है?

वेब के समाधान से एकत्रित समाधान "एंजरीजेएस देव मशीन पर आंशिक कैशिंग को अक्षम करता है"

विकास के लिए आप ब्राउज़र कैश को निष्क्रिय भी कर सकते हैं – नीचे क्रोम देव टूल में गियर पर राइट क्लिक करें और विकल्प पर टिक लगाएं

कैश को अक्षम करें (जब डेव टूक खुला हो)

अद्यतन: फ़ायरफ़ॉक्स में डीबगर में एक ही विकल्प है -> सेटिंग्स -> उन्नत अनुभाग (संस्करण 33 के लिए जाँच)

अपडेट 2: यद्यपि यह फ़ायरफ़ॉक्स में कुछ विकल्प दिखाई देता है, लेकिन यह काम नहीं करता है। मैं अग्निबैग का उपयोग करने और हयताउल्ला का उत्तर देने के लिए सुझाव देता हूं।

@ वेलेंटीन के जवाब को थोड़ा सा बनाते हुए, एनजी-व्यू सामग्री में बदलाव होने पर हमेशा कैश को स्वचालित रूप से साफ़ करने का एक तरीका होता है:

 myApp.run(function($rootScope, $templateCache) { $rootScope.$on('$viewContentLoaded', function() { $templateCache.removeAll(); }); }); 

जैसा कि अन्य उत्तरों में बताया गया है, यहां और यहां , कैश का उपयोग करके इसे साफ़ किया जा सकता है:

 $templateCache.removeAll(); 

हालांकि टिप्पणी में गैटोआग्रिडा द्वारा सुझाए गए अनुसार , यह केवल तभी दिखाई देता है जब कोई भी कैश हेडर बिना HTML टेम्पलेट परोसा गया था।

तो यह मेरे लिए काम करता है:

कोणीय में:

 app.run(['$templateCache', function ( $templateCache ) { $templateCache.removeAll(); }]); 

आप विभिन्न तरीकों से कैश हेडर जोड़ सकते हैं लेकिन यहां कुछ ऐसे समाधान दिए गए हैं जो मेरे लिए काम करते हैं

IIS का उपयोग करते हुए, इसे अपने web.config में जोड़ें:

 <location path="scripts/app/views"> <system.webServer> <staticContent> <clientCache cacheControlMode="DisableCache" /> </staticContent> </system.webServer> </location> 

अगर एनजीएक्स का उपयोग करना है, तो आप इसे अपने कॉन्फ़िग में जोड़ सकते हैं:

 location ^~ /scripts/app/views/ { expires -1; } 

संपादित करें

मुझे एहसास हुआ कि सवाल ने dev मशीन का उल्लेख किया है लेकिन उम्मीद है कि यह अभी भी किसी की सहायता कर सकती है …

यदि आप कैश के बारे में बात कर रहे हैं जिसका इस्तेमाल पूरी पेज को पुनः लोड किए बिना टेम्पलेट्स के कैशिंग के लिए किया गया है, तो आप इसे किसी तरह से खाली कर सकते हैं:

 .controller('mainCtrl', function($scope, $templateCache) { $scope.clearCache = function() { $templateCache.removeAll(); } }); 

और मार्कअप में:

<button ng-click='clearCache()'>Clear cache</button>

और कैश साफ़ करने के लिए इस बटन को दबाएं।

फ़ायरफ़ॉक्स के लिए समाधान (33.1.1) फायरबग का प्रयोग (22.0.6)

  1. उपकरण> वेब-टूल्स> फायरबग> ओपन फायरबग
  2. फायरबग दृश्यों में "नेट" दृश्य पर जाते हैं।
  3. ड्रॉप डाउन मेनू प्रतीक "नेट" (दृश्य का शीर्षक) के बगल में दिखाई देगा।
  4. ड्रॉप डाउन मेनू से "ब्राउज़र कैश अक्षम करें" चुनें

इस स्निपेट ने मुझे टेम्पलेट कैशिंग से छुटकारा पाने में मदद की

 app.run(function($rootScope, $templateCache) { $rootScope.$on('$routeChangeStart', function(event, next, current) { if (typeof(current) !== 'undefined'){ $templateCache.remove(current.templateUrl); } }); }); 

इस लिंक पर निम्नलिखित स्निपेट का ब्योरा पाया जा सकता है: http://oncodesign.io/2014/02/19/safely-prevent-template-caching-in-angularjs/

मैं इसे सभी संभावनाओं को पूरा करने के लिए पोस्ट कर रहा हूं क्योंकि अन्य समाधानों के लिए मेरे लिए काम नहीं किया गया है (अन्य लोगों के बीच वे कोणीय-बूटस्ट्रैप टेम्प्लेट निर्भरता के कारण त्रुटियों को फेंक देते हैं)।

जब आप किसी विशिष्ट टेम्प्लेट को विकसित कर रहे हैं / डिबग कर रहे हैं, तो आप यह सुनिश्चित कर सकते हैं कि यह हमेशा पथ में एक टाइमस्टैम्प शामिल करके रीफ्रेश करेगा, जैसे:

  $modal.open({ // TODO: Only while dev/debug. Remove later. templateUrl: 'core/admin/organizations/modal-selector/modal-selector.html?nd=' + Date.now(), controller : function ($scope, $modalInstance) { $scope.ok = function () { $modalInstance.close(); }; } }); 

templateUrl ?nd=' + Date.now() चर में अंतिम ?nd=' + Date.now() नोट करें

जैसा कि अन्य लोगों ने कहा है, देव उद्देश्यों के लिए पूरी तरह से कैशिंग को हराकर कोड को बदलने के बिना आसानी से किया जा सकता है: एक ब्राउज़र सेटिंग या प्लगइन का उपयोग करें मार्ग के आधार पर टेम्पलेट्स के कोणीय टेम्पलेट कैशिंग को परास्त करने के लिए, देव के बाहर, $ मार्ग के दौरान कैश से टेम्पलेट URL को हटा दें। (या $ राज्य बदलें UI रूटर के लिए), जैसा कि शयन ने दिखाया था हालांकि, यह एनजी-शामिल द्वारा लोड किए गए टेम्पलेट्स के कैशिंग को प्रभावित नहीं करता है, क्योंकि ये टेम्पलेट राउटर के माध्यम से लोड नहीं किए जाते हैं।

मैं किसी भी टेम्पलेट को हॉटफिक्स करने में सक्षम होना चाहता था, जिसमें एनजी-शामिल द्वारा लोड किए गए, उत्पादन में और उपयोगकर्ताओं को अपने ब्राउज़र में हॉटफिक्स को जल्दी से पूरे पेज को पुनः लोड किए बिना प्राप्त करना है। मैं टेम्पलेट्स के लिए HTTP कैशिंग को हराने के बारे में भी चिंतित नहीं हूं। समाधान, ऐप द्वारा किए गए हर HTTP अनुरोध को रोकना है, उन लोगों को अनदेखा करना है जो मेरे ऐप के। HTML टेम्पलेट्स के लिए नहीं हैं, फिर टेम्प्लेट के यूआरएल पर एक परम जोड़ें जो हर मिनट बदलता है। ध्यान दें कि पथ-जाँच आपके ऐप के टेम्पलेट के पथ के लिए विशिष्ट है। एक अलग अंतराल प्राप्त करने के लिए, परम के लिए गणित को परिवर्तित करें, या कोई कैशिंग प्राप्त करने के लिए पूरी तरह से% को निकालें।

 // this defeats Angular's $templateCache on a 1-minute interval // as a side-effect it also defeats HTTP (browser) caching angular.module('myApp').config(function($httpProvider, ...) { $httpProvider.interceptors.push(function() { return { 'request': function(config) { config.url = getTimeVersionedUrl(config.url); return config; } }; }); function getTimeVersionedUrl(url) { // only do for html templates of this app // NOTE: the path to test for is app dependent! if (!url || url.indexOf('a/app/') < 0 || url.indexOf('.html') < 0) return url; // create a URL param that changes every minute // and add it intelligently to the template's previous url var param = 'v=' + ~~(Date.now() / 60000) % 10000; // 4 unique digits every minute if (url.indexOf('?') > 0) { if (url.indexOf('v=') > 0) return url.replace(/v=[0-9](4)/, param); return url + '&' + param; } return url + '?' + param; } 

यदि आप UI राउटर का उपयोग कर रहे हैं तो आप डेकोरेटर का उपयोग कर सकते हैं और $ टेम्पलेट अपडेट कर सकते हैंफैक्टर सेवा और templateUrl के लिए एक क्वेरी स्ट्रिंग पैरामीटर संलग्न करें, और ब्राउज़र हमेशा सर्वर से नए टेम्पलेट को लोड करेगा।

 function configureTemplateFactory($provide) { // Set a suffix outside the decorator function var cacheBust = Date.now().toString(); function templateFactoryDecorator($delegate) { var fromUrl = angular.bind($delegate, $delegate.fromUrl); $delegate.fromUrl = function (url, params) { if (url !== null && angular.isDefined(url) && angular.isString(url)) { url += (url.indexOf("?") === -1 ? "?" : "&"); url += "v=" + cacheBust; } return fromUrl(url, params); }; return $delegate; } $provide.decorator('$templateFactory', ['$delegate', templateFactoryDecorator]); } app.config(['$provide', configureTemplateFactory]); 

मुझे यकीन है कि $ pathProvider में "कब" विधि को सजाने के द्वारा आप एक ही परिणाम प्राप्त कर सकते हैं

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

यहां Date का उपयोग करने की तरह डेव कैशबस्टिंग विधि दिखाई देती है।

 app.factory('cachebustInjector', function(conf) { var cachebustInjector = { request: function(config) { // new timestamp will be appended to each new partial .html request to prevent caching in a dev environment var buster = new Date().getTime(); if (config.url.indexOf('static/angular_templates') > -1) { config.url += ['?v=', buster].join(''); } return config; } }; return cachebustInjector; }); app.config(['$httpProvider', function($httpProvider) { $httpProvider.interceptors.push('cachebustInjector'); }]); 

ब्राउज़र / प्रॉक्सी कैशिंग को रोकने के लिए कोई समाधान नहीं है क्योंकि आप उस पर नियंत्रण नहीं कर सकते।

अपने उपयोगकर्ताओं को ताज़ा सामग्री को HTML फ़ाइल का नाम बदलने के लिए मजबूर करने का दूसरा तरीका! वास्तव में https://www.npmjs.com/package/grunt-filerev संपत्तियों के लिए करता है

क्रोम में यहाँ एक और विकल्प है

डेवलपर टूल खोलने के लिए F12 मारा। फिर संसाधन > कैश संग्रहण > कैश रिफ्रेश करें

यहां छवि विवरण दर्ज करें

मुझे यह विकल्प पसंद है क्योंकि मुझे अन्य उत्तरों के रूप में कैश को अक्षम करना नहीं है।

प्रत्येक 30 सेकंड में दस्तावेज़ रिफ्रेश करें:

 <head> <meta http-equiv="refresh" content="30"> </head> 

w3schools एचटीएमएल http-equiv विशेषता