0

私のモデルのメタデータのフェッチは、Chrome では非常に遅いようですが、IE では高速です。

私の dbcontext には、多くのナビゲーション プロパティを持つ約 35 のエンティティが含まれており、追加するエンティティごとに遅延が発生します。現在、遅延は約 20 秒で、クエリが未加工のメタデータを返した後に開始されます。CPU が大量に動作しているため、メモリ使用量は安定しています。i7 プロセッサと十分なメモリがあります。

これら 2 つのブラウザーで JavaScript エンジンがどのように連動しているかに違いがあることはわかっています。Chrome の JavaScript JIT コンパイラーは浮動小数点演算用に最適化されています (これが、Chrome で webgl グラフィックスが IE よりも 1000 倍高速である理由です)。 fetchMetaData がしなければならない作業への影響は?

他の誰かがこの遅さに気づいたことがありますか? 私の関係が間違っているのでしょうか?遅延が終わったらすべてがうまくいくので、人間関係に問題があるのではないかと疑っています.

4

2 に答える 2

1

問題と解決策を見つけました!

これをご覧いただきありがとうございます。あなたの返信の後、プロジェクト全体を基本に落とし込み、問題を再現して干渉を探すことにしました。

これは、私が Breeze を実装した古いプロジェクトです。このプロジェクトでは、標準の jquery ポスト/取得メソッドを使用して MVC からデータを取得しました。MVC から json データをポストおよび受信する際に日付と時刻が常に問題になるため、起動スクリプトに次のコードを含めました。

    // Add datafilter to jQuery ajax calls to translate dates
$.ajaxSettings.dataFilter = function (data, type) {
    //if (type === 'json') {
    // convert things that look like Dates into a UTC Date string and completely replace them.
    data = data.replace(/(.*?")(\\\/Date\([0-9\-]+\)\\\/)(")/g,
                    function (fullMatch, $1, $2, $3) {
                        try {
                            return $1 + new Date(parseInt($2.substr(7))) + $3;
                        }
                        catch (e) { }
                        // something miserable happened, just return the original string
                        return $1 + $2 + $3;
                    });
    //}
    return data;
};

このコードを削除した後 (breeze は日付を適切に処理するため)、すべてが正常に機能します。このタイプのコードは、日付を適切に処理する必要がある他の古いプロジェクトで一般的である可能性があります。上記のスニペットをWiredPrairieから取得したことは知っていますが、他のプロジェクトでもこの問題が発生すると確信しています。

于 2013-02-09T21:23:16.547 に答える
0

Dmitri、私はこれを再現できないので、他に何か関係があるのではないかと思っています. Firefoxも試しましたか?

于 2013-02-09T03:20:43.173 に答える