অ্যাংুলারজেএস ডি মেশিনে আংশিক ক্যাচিং অক্ষম করে


210

অ্যাঙ্গুলারজেএস-এ ক্যাশে পার্টিয়াল নিয়ে আমার সমস্যা আছে।

আমার এইচটিএমএল পৃষ্ঠাতে:

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

যেখানে আমার পার্টিয়ালগুলি বোঝা।

আমি যখন আমার আংশিক এইচটিএমএল কোড পরিবর্তন করি তখন ব্রাউজারটি এখনও পুরানো ডেটা লোড করে।

কোন workaround আছে?


4
কেবলমাত্র একটি দ্রষ্টব্য নোট: আমার এই সমস্যাটি ছিল যা আমার ফ্লাস্কের অ্যাপ্লিকেশনটি ফেরত পাঠাচ্ছিল ক্যাশে নিয়ন্ত্রণ শিরোনামগুলির সাথে সম্পর্কিত। আমি যোগ করে সমস্যা এড়াতে পেয়েছিলাম app.config.update(SEND_FILE_MAX_AGE_DEFAULT=0)আমার কাছে flask_app.py। (আমি অন্যান্য ওয়েব সার্ভারের জন্য একই জিনিস বিদ্যমান কল্পনা করি)।
গ্যাটোয়াটিগ্রাডো

4
আপনি যদি ক্রোম ব্যবহার করে থাকেন তবে কেবল একটি Ctrl+Shift+R(যেমন হার্ড রিলোড) করুন এবং কী ক্যাচিং পদ্ধতি ব্যবহার করা হোক না কেন ক্রোম এটিকে উপেক্ষা করবে এবং সমস্ত স্ক্রিপ্ট, স্টাইলশিট ইত্যাদি
আনবে

4
সিআরটিএল + শিফট + আর ক্রোমে আমার জন্য কাজ করে না, তবে বিকাশকারী সরঞ্জামগুলির "নেটওয়ার্ক" ট্যাবে, "অক্ষম ক্যাশে" ক্লিক করে পুরোপুরি কার্যকর হয়। আমার জন্য, এটি ক্লায়েন্টের পাশের সমস্যা যা নীচের অনেক পরামর্শের মতো সার্ভারে হ্যাক ব্যবহার করে সমাধান করা উচিত নয়; এটি ক্লায়েন্টের উপর স্থির করা উচিত যেখানে "সমস্যা" উপস্থিত রয়েছে। আপনি যদি সার্ভারে এটি ঠিক করেন, এবং এটি সংশোধন করতে ভুলে যান, উত্পাদন বিরূপ প্রভাবিত হতে পারে।
পিঁপড় কুটসেরা

8
সিআরটিএল + শিফট + আর স্বাভাবিক অনুরোধের জন্য ক্যাশে বাইপাস করে। ng-includeএর জন্য কৌনিক থেকে তৈরি আজাক্স অনুরোধ | ng-view| templateUrlএই শর্টকাট দ্বারা পরিচালিত হয় না
অ্যান্ড্রে ওয়ার্ল্যাং

2
আপনি সাইটটি দেখার সময় সমস্ত শেষ ব্যবহারকারীকে Ctrl + Shift + R এ জিজ্ঞাসা করতে পারবেন না, তাহলে অ বিকাশের ক্ষেত্রে এই প্রশ্নের উত্তর কী? "আমার জন্য, এটি ক্লায়েন্টের পাশের সমস্যা যা নীচের অনেক পরামর্শের মতো সার্ভারে হ্যাকগুলি ব্যবহার করে সমাধান করা উচিত নয়" - আমি সম্মত নই, আপনি কোনও ওয়েব পরিবেশে ক্লায়েন্টকে নিয়ন্ত্রণ করতে পারবেন না তাই উত্পাদনের স্থিরতা প্রয়োগ চালিত হতে হবে। সেই কারণে আমি মেনে নিয়েছি: S রুটস্কোপ $ (অন ('$ ভিউকন্টেন্টলয়েড', ফাংশন () {$ টেমপ্লেট ক্যাচ.রেমওএল ();});
রবার্ট ক্রিশ্চিয়ান

উত্তর:


200

বিকাশের জন্য আপনি ব্রাউজার ক্যাশে নিষ্ক্রিয় করতেও পারেন - নীচে নীচে Chrome ডি সরঞ্জামগুলিতে গিয়ারে ডান ক্লিক করুন এবং বিকল্পটি টিক দিন

নিষ্ক্রিয় ক্যাশে (DevTools খোলা সময়)

আপডেট: ফায়ারফক্সে ডিবাগার -> সেটিংস -> উন্নত বিভাগে (সংস্করণ 33 এর জন্য পরীক্ষিত) একই বিকল্প রয়েছে

আপডেট 2: যদিও ফায়ারফক্সে এই বিকল্পটি প্রদর্শিত হয়েছে কিছু রিপোর্টে এটি কাজ করে না। আমি ফায়ারব্যাগ ব্যবহার এবং হাদায়তুল্লাহ উত্তর অনুসরণ করার পরামর্শ দিচ্ছি।


7
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত কারণ এটিতে কোনও কোড পরিবর্তনের প্রয়োজন হয় না, এবং অপের অনুরোধের মূল বিষয়টি। অবশ্যই আপনি অনুরোধগুলি ক্যাশে করার জন্য একটি প্রযোজনীয় অ্যাপ্লিকেশন চাইবেন, সুতরাং উপরোক্ত লোকেরা যা বলেছিল তা করা, অর্থপূর্ণভাবে, কোডটি যদি কোনও প্রোডাকশন অ্যাপে রেখে যায় তবে সমস্যাটি প্রমাণ করতে পারে।
অ্যারন ওয়াগনার

ফায়ারফক্সের মতো অন্যান্য ব্রাউজারগুলির জন্য কোনও পরামর্শ?
লেরেভেমি

ফায়ারফক্সে: ডিবাগার> সেটিংস (গিয়ার) একই বিকল্প রয়েছে।
লুকসোলার

5
এটি ফায়ারফক্সে কাজ করে না। এমনকি যখন ক্যাশে অক্ষম করা থাকে এবং টুলবক্স খোলা থাকে, তখনও টেমপ্লেটগুলি ক্যাশে থাকে।
প্যাট্রিক জে কলিন্স

4
ক্যাচিং কি উত্পাদনকেও প্রভাবিত করে? যদি আমি সার্ভারে নতুন ওয়েব ফাইলগুলি ধাক্কা দিয়ে থাকি, তবে প্রযোজনা ক্লায়েন্টদের প্রাক-প্রকাশিত ক্যাশেড সংস্করণ লোড করা থেকে পরবর্তী অনুরোধগুলি কী বাধা দেয়?
মেফেক্ট

111

@ ভ্যালেন্টেনের উত্তরটি কিছুটা বাড়িয়ে তোলা, যখনই এনজি-ভিউ সামগ্রীতে পরিবর্তন আসে তখন সর্বদা স্বয়ংক্রিয়ভাবে ক্যাশে সাফ করার একটি উপায়:

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

@ ব্যবহারকারী 252690 সম্ভবত এইচটিএমএল টেমপ্লেটটি ক্যাশে শিরোনাম সহ প্রেরণ করা হয়নি তাও নিশ্চিত করা দরকার। সম্ভাব্য সংশোধনগুলির জন্য এখানে এবং এখানে দেখুন
ক্রিস ফস্টার 17

30
কিছুটা সতর্কবার্তা: $ টেমপ্লেট ক্যাশে খালি করা আসলে অযৌক্তিক পরিণতি হতে পারে। উদাহরণস্বরূপ, ইউআই বুটস্ট্র্যাপ শুরু করার সময় সরাসরি $ টেমপ্লেট ক্যাশে ডিফল্ট পার্টিয়াল যুক্ত করে এবং পরে সেগুলি সেখানে থাকার প্রত্যাশা করে।
স্ট্রিল

@ স্ট্রিলি আমি কৌণিক-ইউআই-বুটস্ট্র্যাপ মডেলটি ব্যবহার করার চেষ্টা করছিলাম। পপ আপ দৃশ্যমান ছিল না। কারণ $ টেমপ্লেটক্যাচ.রেমভএল (); এটির জন্য কোনও সমাধান?
মুকুন

4
@ মুকুন: মুছে ফেলা সমস্ত () ব্যবহার না করে অন্যভাবে দেখার মতো সহজ সমাধানের উপায় নেই তবে পরিবর্তে আপনার মুছে ফেলা কীগুলি মুছতে মুছুন () ব্যবহার করুন। কোন কীগুলি মুছতে হবে তা জানতে আপনার এক ধরণের বুককিপিং প্রয়োজন would
স্ট্রিল

কেবল নির্দিষ্ট ইউআই ভিউ ক্যাশে-তে ক্যাশে সাফ করার কোনও উপায় আছে কি?
গায়ান

37

অন্যান্য উত্তরে উল্লিখিত হিসাবে, এখানে এবং এখানে , ক্যাশে ব্যবহার করে সাফ করা যেতে পারে:

$templateCache.removeAll();

কিন্তু যখন দ্বারা প্রস্তাবিত gatoatigrado মধ্যে মন্তব্য , এই শুধুমাত্র কাজ উপস্থাপিত হলে এইচটিএমএল টেমপ্লেট কোনো ক্যাশে হেডার ছাড়া পরিবেশিত হয়।

সুতরাং এটি আমার পক্ষে কাজ করে:

কৌণিক:

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

আপনি বিভিন্ন উপায়ে ক্যাশে শিরোনাম যুক্ত করতে পারেন তবে এখানে বেশ কয়েকটি সমাধান রয়েছে যা আমার পক্ষে কার্যকর।

যদি ব্যবহার করে থাকেন IISতবে এটি আপনার ওয়েবকনফাইগে যুক্ত করুন:

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

Nginx ব্যবহার করে, আপনি এটি আপনার কনফিগারেশনে যুক্ত করতে পারেন:

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

সম্পাদন করা

আমি কেবল বুঝতে পেরেছি যে প্রশ্নটি devমেশিনটির উল্লেখ করেছে তবে আশা করি এটি এখনও কারও সাহায্য করতে পারে ...


2
হ্যাঁ, যদিও এটি সরাসরি মূল প্রশ্নের উত্তর দেয় না এটি আসলে একটি লাইভ ওয়েবসাইটে ক্যাচিং সমস্যা সমাধানে আমাকে সহায়তা করে।
আন্দ্রে

31

আপনি যদি পুরো পৃষ্ঠাটি পুনরায় লোড না করে টেমপ্লেটগুলি ক্যাচ করার জন্য ব্যবহৃত ক্যাশে সম্পর্কে কথা বলছেন, তবে আপনি এটি এমন কোনও কিছু দিয়ে খালি করতে পারেন:

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

এবং মার্কআপে:

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

এবং ক্যাশে সাফ করতে এই বোতামটি টিপুন।


22

ফায়ারবক্স (২৩.০..1) ব্যবহার করে ফায়ারফক্সের জন্য সমাধান (৩৩.১.১)

  1. সরঞ্জামগুলি> ওয়েব-সরঞ্জামগুলি> ফায়ারব্যাগ> ওপেন ফায়ারব্যাগ।
  2. ফায়ারব্যাগের ভিউগুলিতে "নেট" ভিউতে যান।
  3. একটি ড্রপ ডাউন মেনু প্রতীক "নেট" (দেখার শিরোনাম) এর পরে উপস্থিত হবে।
  4. ড্রপ ডাউন মেনু থেকে "ব্রাউজার ক্যাশে অক্ষম করুন" নির্বাচন করুন।

ফায়ারব্যাগে (২.০.১১) এবং ফায়ারফক্সে (৩৮.০.১) ম্যাকের চেষ্টা করা হয়েছে কিন্তু এটি কার্যকর হয়নি।
paullb

19

এই স্নিপেটটি টেমপ্লেট ক্যাচিং থেকে মুক্তি পেতে সহায়তা করেছিল

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/


নিতপিক কিন্তু কারেন্ট কখন কখন অবজেক্ট হয় না? নিশ্চিত যে এটি কখনও নেই তবেif (!current) { return; }
ন্যাট-উইলকিনস

এটি অ্যাংুলারের রুট-ভিত্তিক টেম্পলেটগুলির ক্যাচকে পরাস্ত করে, তবে এনজি-অন্তর্ভুক্ত নয় ti
bradw2k

16

আমি কেবল সমস্ত সম্ভাবনা কভার করার জন্য এটি পোস্ট করছি যেহেতু অন্যান্য সমাধানগুলির কোনওটিই আমার পক্ষে কাজ করে নি (তারা অন্যদের মধ্যে কৌণিক-বুটস্ট্র্যাপ টেম্পলেট নির্ভরতার কারণে ত্রুটি ছুঁড়ে দিয়েছে)।

আপনি যখন কোনও নির্দিষ্ট টেম্পলেটটি বিকাশ / ডিবাগ করছেন, আপনি নিশ্চিত করতে পারেন যে এটি সর্বদা পথের মধ্যে একটি টাইমস্ট্যাম্প অন্তর্ভুক্ত করে রিফ্রেশ করে:

       $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();
            };
          }
        });

উল্লেখ্য চূড়ান্ত ?nd=' + Date.now()মধ্যে templateUrlপরিবর্তনশীল।


1
পরে আপনি .value('DEBUG', true)সেই লাইনটি সক্ষম করতে একটি সেট করতে পারেন ।
ডায়োসনি

1
আমার সলিউশন অধীনে আমার মূল মডিউলের আরম্ভের ফেজ মধ্যে নিম্নলিখিত ব্যবহার করতে ছিল .run(function($rootScope) { $rootScope.DEBUG = true; ...মত $ rootScope উদ্বুদ্ধ নির্দেশ মধ্যে এবং তারপর .directive('filter', ['$rootScope', function($rootScope)...ফিরে অবজেক্ট সম্পত্তিতে: templateUrl: '/app/components/filter/filter-template.html' + ($rootScope.DEBUG ? '?n=' + Date.now() : '')। হতে পারে আপনি আপনার .value ('DEBUG', সত্য) পদ্ধতির বিস্তারিত বর্ণনা করতে পারেন? সম্মত!
জ্যাকলিমারডিউর 14

.value('DEBUG', trueআপনি যেমন ব্যবহার করেছিলেন $rootScopeতেমনই ব্যবহার তবে এটিকে গোলমাল ছাড়াই :) আপনি পরে DEBUGনিয়ামকটি ইনজেক্ট করতে এবং একটি সাধারণ পরিষেবা হিসাবে ক্যোয়ারী করতে পারেন।
ডায়োসনি

.value(...)জিনিসটি অন্তর্ভুক্ত করার জন্য আপনি কি আপনার উত্তরে উত্সকোডটি প্রসারিত করতে পারেন, যদি এটি খুব পরিশীলিত না হয়? আমি মনে করি পিছনের ধারণাটি আমার পক্ষে অজানা একটি কৌনিক সেরা অনুশীলন।
জ্যাকলিমারডিউর

1
আয়নিকের সাথে কাজ করার সময় এই সমাধানটি খুব কার্যকর। এটি লাইভরলোডকে আবার দরকারী করে তোলে বলে এটি আমাকে অনেক সময় বাঁচায়। অসংখ্য ধন্যবাদ!
অজুজার

11

অন্যরা যেমন বলেছে, দেব উদ্দেশ্যে সম্পূর্ণভাবে ক্যাচকে পরাস্ত করা কোড পরিবর্তন না করেই সহজেই করা যায়: ব্রাউজার সেটিংস বা প্লাগইন ব্যবহার করুন। দেবের বাইরে, রুট-ভিত্তিক টেম্পলেটগুলির কৌনিক টেম্পলেট ক্যাচকে পরাস্ত করতে শায়ান দেখিয়েছে, $ রুটচ্যাঞ্জস্টার্ট (বা ইউআই রাউটারের জন্য $ stateChangeStart) চলাকালীন ক্যাশে থেকে টেমপ্লেট URL টি সরিয়ে ফেলুন। তবে, এটি এনজি-অন্তর্ভুক্ত লোড হওয়া টেম্পলেটগুলির ক্যাচিংকে প্রভাবিত করে না, কারণ এই টেম্পলেটগুলি রাউটারের মাধ্যমে লোড হয় না।

আমি প্রযোজনায় এনজি-অন্তর্ভুক্ত থাকা লোডগুলি সহ যে কোনও টেম্পলেট হটফিক্স করতে সক্ষম হতে চেয়েছিলাম এবং ব্যবহারকারীরা পুরো পৃষ্ঠাটি পুনরায় লোড না করেই দ্রুত তাদের ব্রাউজারে হটফিক্স গ্রহণ করতে সক্ষম হন। টেমপ্লেটগুলির জন্য এইচটিটিপি ক্যাচকে পরাস্ত করার বিষয়েও আমি উদ্বিগ্ন নই। সমাধানটি হ'ল অ্যাপটি যে প্রতিটি এইচটিটিপি অনুরোধটি করে তাতে বাধা দেওয়া, আমার অ্যাপ্লিকেশন .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;
    }

আমি আপনার সমাধানে আগ্রহী - আপনি কি এই কোডটি ভাল রাখেন - বা কোনও পরিবর্তন করার পরে একটি নির্দিষ্ট সময়ের জন্য? কারণ - কর্মক্ষমতা সম্পর্কে উদ্বিগ্ন হবে। এছাড়াও, আপনি উল্লেখ করেছেন যে পার্শ্ব-প্রতিক্রিয়াটি HTTP কে পরাজিত করে। আপনি বোঝাতে চেয়েছেন যে এটি একটি ভাল পার্শ্ব-প্রতিক্রিয়া উপায় সঠিক - যার অর্থ আপনি 'হটফিক্স' পেতে চান? থেক্স
জ্যামি

1
আমি এই কোডটি ভালোর জন্য রাখি না, যদিও আমরা ক্যাশে-বুস্টিংয়ের দৈর্ঘ্যটি 10 ​​মিনিটের দিকে ডায়াল করেছি। সুতরাং প্রতি 10 মিনিটের ব্যবহারে, একজন ব্যবহারকারী তাজা এইচটিএমএল টেমপ্লেটগুলি পুনরায় লোড করবে। আমার বিজ অ্যাপের জন্য এটি হট-প্যাচ টেম্পলেটগুলির দক্ষতা অর্জনের জন্য একটি গ্রহণযোগ্য ব্যয় তবে স্পষ্টতই এটি কিছু ধরণের অ্যাপ্লিকেশনগুলির জন্য পারফরম্যান্সকে খুব বেশি ক্ষতিগ্রস্ত করে। ... এটি দুর্ভাগ্যজনক যে এইচটিটিপি ক্যাচিংয়ের পাশাপাশি পরাজিত হয়েছে, তবে আমি এটাগের ইত্যাদিকে পরাভূত না করে বুদ্ধিমানভাবে কৌণিক টেম্পলেট ক্যাচিংকে পরাস্ত করার কোনও উপায় দেখছি না। আইএমও কৌণিক টেম্পলেট ক্যাশিং যথেষ্ট পরিমাণে কনফিগারযোগ্য নয়।
bradw2k

1
+1 আমার একই ধারণা ছিল, তবে আমি কেবল লোকালহোস্টের জন্যই বাধা দিই। আপনি আমার ইন্টারসেপ্টারের বাস্তবায়নটি এখানে দেখতে পাবেন: overengineer.net/…
জোশকলে

@ জোশকমলি যদি আপনার কেবল লোকালহোস্টে ক্যাচিংকে পরাস্ত করতে হয় তবে ব্রাউজার প্লাগইন ব্যবহার করবেন না যা সমস্ত ক্যাচকে পরাস্ত করে?
bradw2k

@ bradw2k এইভাবে আমি কী এবং কী ক্যাশে নেই তার সম্পূর্ণ নিয়ন্ত্রণে আছি, যা উন্নয়নের পক্ষে কার্যকর হতে পারে। আমি সমস্ত ব্রাউজারগুলিতেও পরীক্ষা করি এবং সমস্ত ব্রাউজারগুলিতে আমার প্রয়োজন মতো করে এমন এক্সটেনশন নেই। আমার ক্যাচিং অক্ষম আছে কি না তা আমাকে বিকাশের ক্ষেত্রে একটি সূচকও থাকতে পারে কারণ মাঝে মাঝে আমি কেবল কিছুক্ষণের জন্য ব্রাউজারগুলিতে অক্ষম করতে এবং পরীক্ষা করতে চাই।
জোশকমলে

8

আপনি যদি ইউআই রাউটার ব্যবহার করছেন তবে আপনি ডেকরেটার ব্যবহার করতে পারেন $ টেমপ্লেট ফ্যাক্টরি পরিষেবা আপডেট করতে এবং টেম্পলেট ইউআরএলটিতে কোয়েরি স্ট্রিং প্যারামিটার যুক্ত করতে পারেন এবং ব্রাউজারটি সর্বদা সার্ভার থেকে নতুন টেমপ্লেট লোড করবে।

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]);

আমি নিশ্চিত যে আপনি when রুটপ্রভাইডারে "কখন" পদ্ধতিটি সাজিয়ে একই ফলাফল অর্জন করতে পারবেন।


Better টেমপ্লেট ক্যাশে কৌনিক জেএস টেমপ্লেটগুলি রেজিস্টার করতে গল্প-কৌণিক-টেম্পলেটক্যাচের মতো প্লাগইন ব্যবহার করা এর চেয়ে আরও ভাল বিকল্প। এটি গুল্প-রেভের সাথে ব্যবহার করা উচিত। প্রতিবার কোনও টেমপ্লেট পরিবর্তন হওয়ার সাথে সাথে একটি নতুন সংশোধন নম্বর সহ একটি নতুন জাভাস্ক্রিপ্ট ফাইল তৈরি করা হবে এবং ক্যাচিং কখনও সমস্যা হবে না।
আমান মহাজন

3

আমি দেখতে পেয়েছি যে এইচটিটিপি ইন্টারসেপ্টর পদ্ধতিটি দুর্দান্তভাবে কাজ করে এবং অতিরিক্ত নমনীয়তা এবং নিয়ন্ত্রণের অনুমতি দেয়। অতিরিক্তভাবে, আপনি বাস্টার ভেরিয়েবল হিসাবে একটি রিলিজ হ্যাশ ব্যবহার করে প্রতিটি উত্পাদন মুক্তির জন্য ক্যাশে-বস্ট করতে পারেন।

এখানে দেব ক্যাশেস্টাস্টিং পদ্ধতিটি দেখতে দেখতে কেমন লাগে 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');
}]);

1

এখানে ক্রোমের আরও একটি বিকল্প রয়েছে।

F12বিকাশকারী সরঞ্জাম খুলতে আঘাত করুন । তারপরে সংস্থানসমূহ > ক্যাশে সঞ্চয়স্থান > রিফ্রেশ করুন

এখানে চিত্র বর্ণনা লিখুন

আমি এই বিকল্পটি পছন্দ করি কারণ অন্যান্য উত্তরের মতো আমাকেও ক্যাশে অক্ষম করতে হবে না।


২০১ 2016 সালের নভেম্বর মাসে ক্রোম বনাম 54.0.2840.99 এ আমি রিসোর্সের চেয়ে অ্যাপ্লিকেশন.রাথার নামে একটি ট্যাবে এটি পেয়েছি।
স্ট্যাকওভারফ্লো ব্যবহারকারী

0

ব্রাউজার / প্রক্সি ক্যাচিং প্রতিরোধ করার কোনও সমাধান নেই কারণ এটিতে আপনার নিয়ন্ত্রণ থাকতে পারে না।

এইচটিএমএল ফাইলটির নাম পরিবর্তন করতে আপনার ব্যবহারকারীদের কাছে তাজা সামগ্রীকে বাধ্য করার অন্য উপায়! ঠিক যেমন https://www.npmjs.com/package/grunt-filerev সম্পদের জন্য করে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.