2

これは、私の Web ページにある jQuery メソッドです。同じページを読み込んで画像を置き換えることで、5 秒ごとに画像を更新します。

$(document).ready(function () {
    var refreshId = setInterval(function () {
        $.get('default.aspx', function (data) {
            var page = data;
            var image = $(page).find("img");
            var fecha = $(page).find("div #fecha");


            $("#Chart1").attr("src", image.attr("src"));
            $("#fecha").text(fecha.text());                    
        });
    }, 5000);
});

imgをロードするたびに、データがブラウザのどこかに保存され、クリーンアップされないことがわかりました..そして、タスクマネージャーを開くと、メモリ使用量が増えていることがわかります..

画像 axd のスクリーンショットをここに示します。

メモリの解放について心配する必要がありますか? または、すべてが想定どおりに機能しています..

ここに画像の説明を入力

4

4 に答える 4

3

URLだけを使用して画像をリロードし、URLを取得するページ全体をフェッチしないのはなぜですか?キャッシュを防止したい場合は、サーバーヘッダーを介してキャッシュしないようにイメージを設定するか、キャッシュバスティングを使用します

var img = document.getElementById('Chart1');          //use plain JS since it's just an ID
var refreshId = setInterval(function () {
    var rand = "?"+(Math.random()*10000000000000000);  //cache busting method
    img.src = "path_to_image"+rand                     //set src using busted url
}, 5000);

バストされた各イメージは異なるイメージのように扱われるため、これでもディスク領域を消費します。キャッシュされている場合は、古い画像を使用していることになります。ただし、少なくともページ全体を再度ロードすることはありません。

于 2012-04-25T06:42:55.343 に答える
1

ブラウザは画像をキャッシュしているだけであることがわかりましたが、最終的にはクリーニングされています。

于 2012-07-03T18:55:04.813 に答える
0

ページには img#Chart1 が 1 つしかないため、メモリを使用するイメージは 1 つだけです。
他のものはブラウザのキャッシュにあるだけです。

しかし、default.aspx が html 形式で返されるとは思いません。
次のような json でデータを返す必要があります。

{
    imageUrl: "http://example.com/a.jpg",
    fetcha: "some text"
}
于 2012-04-25T07:10:52.880 に答える
0

$get の代わりに $post を使用します。IE はしばしば GET 要求データをキャッシュします。

于 2012-04-25T06:59:09.653 に答える