1

ユーザーがシングル ページ アプリケーションの最新バージョンを使用していることを確認する最善の方法は何ですか? ユーザーが最新のページ リソース(JS+CSS)を取得するためにctrl+F5を押す必要がないようにするにはどうすればよいですか?

4

3 に答える 3

1

これが私の解決策です:

PHP:

ob_start(function($data) {
    return preg_replace_callback(
        "(/(?:js|css|img)/.*?\.(?:js|css|png|jpg|gif))",
        function($m) {
            if( file_exists(substr($m[0],1))) return $m[0]."/t=".filemtime(substr($m[0],1));
            else return $m[0];
        },
        str_replace(array_keys($rep),array_values($rep),$data)
    );
});

.htaccess:

RewriteRule (.*)/t=[0-9]+$ /$1

これにより、特定のタイムスタンプがすべての画像、スタイル、およびスクリプトに自動的に追加されます。つまり、変更時間です。その後、.htaccess再び剥ぎ取ります。

これは、これらのファイルのいずれかが更新されるたびに、キャッシュされたバージョンが事実上即座に無効になることを意味します。すべてのブラウザで完全に動作することがテストされています。

于 2013-01-16T08:16:02.930 に答える
1

静的ファイルへのすべての参照の前にビルダー番号を付けます。

代わりに、ビルド番号である 123/js/app.jsを指す必要があります。/js/123/app.js

デプロイごとに、ビルド番号を増やします。

app.js次に、パスに偽のフォルダーがある場合にサーバーが検出できるように、いくつかの書き換えを行う必要があります。

もちろん、静的ファイルは、誰かがブラウザーを閉じて再度ページにアクセスするか、F5 キーを押すまで再ロードされません)。

これを解決するには、AJAX を使用してリクエストapp.jsし、変更されているかどうかを確認します。

$.ajax({
    type:"GET",
    url:'/js/123/app.js',
    cache:true,
    ifModified:true,                  
    success:function(data,textStatus,jqXHR){
        console.debug(data);     // Returns undefined when response is 304 Not Modified
    }
});
于 2013-01-16T08:13:21.937 に答える
0

静的コンテンツ フォールドの前にビルド番号を付けることは、そのための優れた方法です。ビルド後に常に最新のものをプルするようにするには、その手法を、ビルド番号を考慮して静的コンテンツの場所で html をレンダリングするサーバー側タグと組み合わせる必要があります。もちろん、100% Angular パラダイムを実行している場合、サーバー側タグのようなものは存在しないため、ソリューションの純度に違反し、ユーザーがログイン後に到達する JSP ページまたは同様のものを用意する必要があります (ようこそページ) を作成し、静的コンテンツを参照します。必要に応じて、サーバー側のコードをそこで終了し、その時点から純粋な静的レイアウトの世界に住むことができます。

于 2016-03-30T18:40:24.143 に答える