6

私の質問は、localStorageを使用することによるパフォーマンスの低下と考えられる回避策に関係しています。私が理解しているように(そしてこれについてはよくわかりませんが)、localStorageへの参照がページに表示されるとすぐに(コンパイル時?)、スレッドをブロックし、ディスクからデータを読み取って、参照用にlocalStorageメモリにデータを入力します。または、ドメインが過去にデータを保存していて、localstorageがすでにそこで使用されていることを認識している場合は、ディスク上のデータを検索する可能性があります。

いずれの場合も、localstorage apiは同期しているため、スレッドがディスクから読み取るのをブロックし、ページが他の処理を実行できるようになる前に、データが読み取られるのを待機します。ページにiframeを挿入するとします。このページには、ソースとして別のドメインが動的に読み込まれます。この投稿で説明されているように、このiframeを使用してpostMessageを介してすべてのローカルストレージの読み取りと書き込みを行う場合、iframeをロードするとすぐにスレッドがブロックされるだけではありませんか?これにより、localstorageを使用する非同期の方法が得られますか?それとも私は完全にオフですか?

4

1 に答える 1

2

すべてのウィンドウと iframe は個別のブラウザー実行コンテキストで実行されるため (つまり、すべて同時に実行されます)、はい、これは postMessage を介して localStorage を非同期にする必要があります。明らかに、同じドメインとは異なるドメインから iframe をロードすると、システムのセキュリティに影響を与える可能性があります。postMessage がクロスドメインで機能することは事実ですが、完全に信頼できるドメイン (つまり、自分のドメイン) からこの iframe をロードしたいと思います。

于 2012-09-18T06:52:40.240 に答える