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