ホームページ  >  記事  >  ウェブフロントエンド  >  AngularJs でテンプレートのキャッシュを無効にする方法

AngularJs でテンプレートのキャッシュを無効にする方法

小云云
小云云オリジナル
2017-12-07 15:52:531158ブラウズ

AngularJs の特性 (またはブラウザ自体のキャッシュ?) により、Angular のデフォルトの HTML テンプレートの読み込みはキャッシュされます。その結果、テンプレートを変更するたびに、ブラウザが最新の HTML テンプレートを取得できるようにするためにブラウザのキャッシュをクリアする必要があることがよくあります。自分でテストするのは問題ありませんが、サーバーのテンプレートのコンテンツが更新されると、すべてが更新されるわけではありません。ユーザーはブラウザのキャッシュをクリアすることに協力します。ですから、これは本当に大きな問題なのです。この記事では主にAngularJsでテンプレートのキャッシュを無効にする方法を紹介します。


app.config(function($routeProvider, $locationProvider) { 
 $routeProvider 
  .when('/Book/:bookId/ch/', { 
  templateUrl: 'chapter.html', 
  controller: 'ChapterController' 
 }); 
});


方法 1: AngularJs に毎回サーバーから新しいテンプレートを強制的にロードさせるために、テンプレート ファイル パスの後にタイムスタンプ (または他の乱数) を追加します


app.config(function($routeProvider, $locationProvider) { 
 $routeProvider 
  .when('/Book/:bookId/ch/', { 
  templateUrl: 'chapter.html' + '?datestamp=' + (new Date()).getTime(), 
  controller: 'ChapterController' 
 }); 
});


しかし、これは方法 あまりにも見苦しい。 。 。 。

方法 2: $templateCache を使用してキャッシュをクリアします


// 禁止模板缓存 
app.run(function($rootScope, $templateCache) { 
  $rootScope.$on('$routeChangeStart', function(event, next, current) { 
    if (typeof(current) !== 'undefined'){ 
      $templateCache.remove(current.templateUrl); 
    } 
  }); 
});


ルーティング アドレスを構成した後、このコードを app.config の後に追加して、AngularJs が templateUrl をキャッシュしないようにします。

関連する推奨事項:

angularJs でブラウザーのキャッシュをクリアする方法

AngularJS のドロップダウン ボックスの高度な使用方法の詳細な紹介

AngularJS を始めるための一般知識の概要

以上がAngularJs でテンプレートのキャッシュを無効にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。