2016-12-21 5 views
3

私はモバイルアプリケーションを開発しています。次のコマンドを使用して、ブラウザで動作するバージョンをビルドして実行します(ionic serveでは必要ないすべてのフックを引っ張ります)。Ionic 2、Chromeはディスクキャッシュからロードし続ける

ionic build browser --desktop --testing && http-server platforms/browser/www/ 

昨日と数週間、これは完全に機能します。私は同じコマンドを停止して開始し、すべてをビルド/コンパイルします。すべてが素晴らしいです。

次にGoogle Chromeを更新しました。さて、私が何をしても、Chromeはこれらのリソースをすべて削除して再作成しても、ディスクキャッシュからこれらのリソースをすべて引き出します。どのように私が解決することができる任意のアイデア?リロードするたびにキャッシュをクリアする必要はありません。これが原因で追加の問題が発生するようです。

私は、なぜこの変更が行われたのか分かりません。私のIonic2アプリケーションでは、プロジェクトや設定の設定が異なります。リロードするだけではなく、CMD-RのCMD-シフト-Rを使用して

ディスクキャッシュから読み込むが、私は混乱していると、ここで何が起こったのか理解したくないためにChromeを強制するようだ...

答えて

2

クロームキャッシュしますたくさんいますが、つぶしキャッシュを使用することにより、キャッシュからそれらを取るのではなく、サーバーからリソースをロードするためにそれを強制することができます

ロードテンプレート:

var timestamp = (new Date()).getTime(); 

$ionicPopup.show({ 
    scope: $scope, 
    title: 'Work!', 
    templateUrl: '/templates/roll-timer-popup.html?update='+timestamp 
}); 

ロードスクリプト/スタイルシート:

<script src="myscripts.js?update=123..."></script> 

<link rel="stylesheet" type="text/css" href="theme.css?update=123..."> 

スクリプト/スタイルシートの場合は、タイムスタンプとともに動的に作成して後で挿入することができます。

または、あなたのscripts-filesが一緒にバンドルされるとき、nodejs-scriptを使用して最終的なindex.htmlファイルにタイムスタンプを書き込んで、自分のプロジェクトの1つにこのスクリプトを作成することができます。

const fs = require('fs'); 

var filename = process.argv[2]; 

var regExp = /[.|\w]+[.]js/; 
var contentToAttach = ['<!-- CONTENT ATTACHED BY '+process.argv[1]+' -->','you can put other content in here that is put into at the end of your file']; 

fs.readFile(filename, { 
    flag : 'r', 
    encoding: 'utf-8' 
},(err, oldFileContent) => { 
    if (err) throw err; 
    var fileContent = oldFileContent; 
    var oldScriptName; 
    var now = (new Date()).getTime(); 
    var lastIndexPos = 0; 
    while (oldScriptName = oldFileContent.match(regExp)) { 
     var newScriptName = oldScriptName + '?update=' + now; 
     var newIndexPos = fileContent.indexOf(oldScriptName); 
     if (newIndexPos !== lastIndexPos) { 
      fileContent = fileContent.replace(oldScriptName, newScriptName); 
      lastIndexPos = newIndexPos; 
     } 
     else { 
      // same filename found 
      var fildContentSlice = fileContent.slice(newIndexPos+oldScriptName.length); 
      fildContentSlice = fildContentSlice.replace(oldScriptName, newScriptName); 
      fileContent = fileContent.slice(0,newIndexPos+oldScriptName.length)+fildContentSlice; 
     } 
     oldFileContent = oldFileContent.replace(oldScriptName, ''); 
    } 
    var wholeContent = fileContent+'\n\r'+contentToAttach.join('\n\r'); 
    fs.writeFile(filename,wholeContent, (err) => { 
     if (err) throw err; 
     console.log('File: '+filename+' is updated!'); 
    }); 
}); 

それは挿入?更新= 123 ...それはファイルで見つけることができるすべてのスクリプトタグで。シェルの書き込みで、このスクリプトを実行するに :

node updateScript.js path_to_your_html_file 

はそれがお役に立てば幸いです。

+1

ありがとうございますが、これは私が正確に直面している問題ではありません。 Ionic2は、すべてを同じ名前を持つパディパッケージにまとめ、Chromeはこれらをキャッシュすることによって有用と判断しました。それは文字どおりです。私が言ったctrl + shift + Rリロードはうまくいきました...私のプロジェクトの何も変わっていないので、何が起こっているのか理解したいだけです。ちょうど最新のバージョンにChromeを更新しました:非常に迷惑な –

+0

あなたは大歓迎です。申し訳ありませんが、クロームの実装方法はわかりませんが、バンドルされたスクリプトファイルの処理に役立つ回答を更新しました。もっと役立つことを願っています。 – Blauharley

関連する問題