6

createObjectURLローカル画像ファイルへの参照URLを取得するために使用しています。ファイル/イメージが完成したら、revokeObjectURLそのメモリを解放するために呼び出します。すべてがうまく機能しますが、できる限りすべてのメモリを解放していることを確認したいだけです。

chrome://blob-internalsページを調べた後、私の懸念が生じました。画像を呼び出しcreateObjectURLて使用すると、2つのエントリが作成されていることに気付きました。URL付きのもの blob:blobinternal:///d17c4eef-28e7-42bd-bafa-78d5cb86e761

と他の

blob:http://localhost/dbfe7b09-81b1-48a4-87cd-d579b96adaf8

ただし、どちらも同じローカルファイルパスを参照していました。呼び出すとrevokeObjectURL、2番目のエントリのみがから削除されましたchrome://blob-internals。なぜこれが発生するのですか、他のエントリを削除するにはどうすればよいですか、2つのタイプの違いは何ですか?

また、画像を使用する前にURLを取り消す人の例も見ました。これにはどのような効果がありますか?

トピックへの洞察をいただければ幸いです。:)

編集:私はjsfiddleで例を作成しました。したがって、最初にblobinternalsを開き、既存のblobをすべて削除します。次に、jsfiddleの例を実行し、マシン上のイメージファイルを選択します。次に、blobinternalsを更新して、何が追加されたかを確認します。次に、私の例では「URLを取り消す」をクリックします。最後に、blobinternalsを更新して、残っているblobを確認します。

4

1 に答える 1

1

もう1つの参照(で始まるもの)は、要素blob:blobinternalによって保持されているようです。input type="file"入力の値をリセットするように関数を変更しました。[URLを取り消す]ボタンをクリックすると、すべての参照がクリアされます。

killBut.onclick = function () {
    URL.revokeObjectURL(ourURL);
    fileBut.value = '';
};

ChromeCanaryでテスト済み。

于 2011-08-24T12:46:26.537 に答える