3

Chrome 5.0.375.99 で HTML5 マニフェスト ファイルに奇妙な問題が発生していますが、Safari ではすべて正常に動作しているようです。

初めて指定されたマニフェスト ファイルを使用してページを初めて読み込むとき、マニフェスト内のすべてのファイルが読み込まれ、途中でマニフェスト ファイルが再び取得されるように見えることを Fiddler を使用して確認できます。この時点で、エラー イベントがトリガーされ、applicationCache のステータスは UNCACHED になります。

私は次のことを試しました

  1. パソコンを再起動する
  2. ブラウザの再試行
  3. キャッシュされているファイルの量が 5 MB を超えていないことを確認します
  4. HEAD を実行して、マニフェスト ファイル内のファイルが有効であることを確認します
  5. 別のマニフェスト ファイル名を使用してみました
4

2 に答える 2

9

Chrome dev チャネルをインストールしたばかりで、問題は引き続き発生しますが、エラー ログが改善され、「Application Cache Error event: Manifest changed during update, Scheduling retry」が表示されます。

マニフェスト ファイルの最後のエントリをダウンロードする直前に変更された場合、Chrome はマニフェスト ファイルをチェックするようです。このエラーは、動的に生成されたマニフェスト ファイルで現在のタイムスタンプ値を使用したために発生します。

アセンブリがビルドされ、問題が解決した時間のタイムスタンプを使用しました。:)

于 2010-07-31T17:10:26.597 に答える
1

私はついにこれを自分の側で解決しました。

私は怠け者で、サーバーにキャッシュマニフェストを動的に生成させたいと思っています。

このモジュールのエクスポートは、サーバー上のキャッシュマニフェストの要求に対する回答です。

2つのリクエストに関するヒントをありがとう、ノードでそれを行った方法は次のとおりです。

//OFFLINE CACHE
var cacheManifest = undefined;

exports.cache = function(req, res){
    if (!cacheManifest) {
        var fsutils = require('modules/utils/fsutils');
        //get the files and generate the output for cache.manifest
        fsutils.getFiles('/public', function(files) {
            var out = 'CACHE MANIFEST\n\ ';
            var len = files.length;
            for (var i = 0; i < len; ++i) {
                out += files[i] + '\n\ ';
            }
            //setup for second request
            cacheManifest = out;
            //send output
            res.header('Content-Type', 'text/cache-manifest');
            res.end(out);
        });
    } else {
        console.log('cache is cahced');
        res.header('Content-Type', 'text/cache-manifest');
        res.end(cacheManifest);
    }
};

ここでの秘訣は、リクエストごとにキャッシュマニフェストを再構築しないことです。基本的に、ユーザーは、マニフェストが変更された場合、アプリに初めてアクセスしたときにのみマニフェストを取得します。または、クライアント側またはサーバー側のコードを使用してマニフェストを強制的に期限切れにすることができます。

最初の訪問では常に最新のマニフェストが生成され、その後は何でもできます。

リクエストごとにキャッシュマニフェストドキュメントを(モロニックに)生成していて、chromeが2番目のリクエストをバックアップするため、一致せず失敗したため、エラーが発生しました。

ダン...

于 2013-01-26T02:32:05.497 に答える