2016-12-30 17 views
2

アプリケーション(SPA)を作成して、ページナビゲーションアクション全体でindex.htmlをキャッシュしないようにする必要があります。IIS/AngularJS単一ページアプリケーション - アプリケーション内をナビゲートするときに単一のindex.htmlのページキャッシュを防止するには

私のアプリにはキャッシュの破損がありますが、index.htmlを更新(リロード)した場合にのみ機能します。

アプリ内でナビゲートするときに、アプリケーションがindex.htmlをキャッシュしないようにするにはどうすればよいのですか?各ページのナビゲーションクリックまたはアクションでindex.htmlを再ロードしますか?ここで

である私の既存のスニペットのindex.htmlコード:

<!DOCTYPE html> 
<html lang="en" manifest="sw.appcache"> 
    <head> 
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" /> 
    <meta http-equiv="Pragma" content="no-cache" /> 
    <meta http-equiv="Expires" content="0" /> 

sw.appcacheファイルの内容

CACHE MANIFEST 
NETWORK: 
* 

編集:

に、次の追加私のindex.html内のscriptタグURLが変更されるたびにリロードするcesページ。

window.onhashchange = function() { 
     var parts = window.location.href.split("#"); 
     window.location.href = window.location.protocol + "//" + window.location.host + "?t=" + (new Date()).getTime() + "#" + parts[1]; 

     } 
+1

など、画像、またJS CSSをキャッシュからブラウザを防ぐために良いトリックですSPAに迷惑をかける。 –

答えて

1

私がPHPでこの経験をしているのは、あなたが使っているファンシーヘッダにかかわらず、ブラウザがあなたのページをキャッシュするかどうかを決して制御できないということです。

URLをリクエストパラメータで操作することをお勧めします。タイムスタンプは、実行時に動的に生成され、乱数またはあなたが望む任意の動的に一意の文字列可能性がありhttp://example.com/mypage.html?timestamp

:代わりにhttp://example.com/mypage.html
利用

それはあなたがすべてのナビゲーションの変更にページのリロードを強制している場合、あなたにもちょうどの代わりに、通常のWebアプリケーションを使用する場合があります

+0

クイック返信いただきありがとうございます、アプリは私の最後には完全に角度のコードですので、私は要求にタイムスタンプを注入することはできません。また、私はページを取得するためのルートを使用しています。 – Vahe

+1

@Vahe問題ありません。 Angularやその他のJSは、あなたが本当に必要ならばwindow.redirectを使うことができます。もう1つの選択肢は、新しいリクエストとしてページ全体をロードすることを心配するのではなく、リソースを動的にロードすることです(同じトリック)。コーディングジャングルで幸運を祈る! – TinkerTenorSoftwareGuy

関連する問題