2017-02-07 7 views
1

私はangularjsアプリケーションを配備する方法に問題があります。クライアント側のキャッシュをAngularjsで無効にする

私のアプリをデプロイするたびに、ユーザーにキャッシュに関する問題が発生しています。 彼らのブラウザは私のアプリケーションの古いバージョンを保存します。その結果、多くのエラーが発生します。

私はこの問題の可能な解決方法を見ただけで、各cssファイルとjsファイルの後にバージョン番号を追加しました。

<script src="bower_components/angular/angular.js?version=2.3"></script> 

と置き換えてすべてのバージョンを置き換えます。

私が追加しているすべてのファイルについて、これをしたくありません。

誰かがより良い解決策を持っていますか?

ありがとうございます。

+0

いただきましたあなたの物語?どのようにあなたはその結論に来るのですか?あなたの問題のこのバージョンは、実際に人々があなたの答えを助けるのを助けません... – deostroll

+0

上記の行をindex.htmlファイルに含めると十分ですか? – wanttobeprofessional

答えて

1

bower_components/angular/.bower.json下:

{ 
    "name": "angular", 
    "version": "1.5.11", 
    "license": "MIT", 
    "main": "./angular.js", 
    "ignore": [], 
    "dependencies": {}, 
    "homepage": "https://github.com/angular/bower-angular", 
    "_release": "1.5.11", 
    "_resolution": { 
    "type": "version", 
    "tag": "v1.5.11", 
    "commit": "0f57428c3ffe2f486264ab7fbee3968dccc7b720" 
    }, 
    "_source": "https://github.com/angular/bower-angular.git", 
    "_target": "~1.5.1", 
    "_originalSource": "angular" 
} 

とインデックスでちょうど

<script src="../bower_components/angular/angular.js"></script> 

完全な例 - bower-angular

あなただけのキャッシュを無効にしたい場合:

myModule.config(['$httpProvider', function($httpProvider) { 
    //initialize get if not there 
    if (!$httpProvider.defaults.headers.get) { 
     $httpProvider.defaults.headers.get = {};  
    }  

    // Answer edited to include suggestions from comments 
    // because previous version of code introduced browser-related errors 

    //disable IE ajax request caching 
    $httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT'; 
    // extra 
    $httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache'; 
    $httpProvider.defaults.headers.get['Pragma'] = 'no-cache'; 
}]); 
+0

これは角度モジュールの設定の中にあります。 index.htmlスクリプト全体でキャッシュを無効にしたい場合はどうすればよいですか? –

+0

.configは、angleで実行された最初のブロックです。すべてのhttp要求に影響します。 –

+0

私はそれを知っています。しかし、index.htmlファイルでは、まだ角度ファイルをロードしていませんでした。 index.htmlで行われたHTTPリクエストは、角度アプリのHTTPリクエストではなく、キャッシュなしで済むようにしたいと考えています。 –

0

私はあなたのサーバースタックがわかりませんが、私はASP.NETを使用しています。私は、アセンブリのビルド文字列をクエリ文字列として使用します。したがって、このようなものになります。

<script src="bower_components/angular/[email protected]"></script> 

ここで、AppVersionは '1.0.0.12645'のような文字列です。

あなたがexmaple、バウアーはあなたのためにそれを疥癬する必要があり、あなたの bower SRCにバージョンを追加しないでください
+0

URLにバージョンタグを追加するのは理にかなっているようです。サーバースタックを変更する方法がわからない場合や、変更する方法がない場合は、開発段階でjsを動的にロードすることができます。http://stackoverflow.com/a/912713/2143734あなたのスクリプトがリリースされたら、あなたのjsファイル名の末尾 – Zzirconium

関連する問題