2010-11-10 21 views
5

Güncel projemde, IE'nin oldukça fazla bellek kullandığını fark ettim. Bir süredir soruşturma geçirdim, resimlerin bellekten kaldırılmadığını öğrendim, ancak sitem görüntüleri oldukça ilgi çekici kullanıyor. Yeni ekleme yaparkenIE8 görüntü önbelleğe alma veya hata?

<input id="key" type="text" value="jeans" > 
<div id="reset">Reset</div> 
<div id="repeatableReset">Repeatable Reset</div> 
<div id="stop">Stop</div> 
<br /> 
<br /> 
<br /> 
<br /> 
<div id="appendImages">append</div> 
<div id="removeImages">remove</div> 
<div id="imagesContainer"></div> 
<html> 

</html> 

:

$(document).ready(function() { 
    $('#appendImages').click(append); 
    $('#removeImages').click(remove); 
}); 

function append() { 
    $.post("http://localhost/TestService/GetImages", { key: $('#key').val()}, function (data) { 
     $.each(data.Data.items, function (i, v) { 
      $('#imagesContainer').append('<img src="' + v.imageUrl + '" />'); 
     }); ; 
    }); 
} 

function remove() { 
    $('#imagesContainer').empty(); 
} 

Testi html:

Sonunda dinamik jQuery

Testim js kullanarak görüntüleri yükler ve sonra temizler basit bir test oluşturduk görüntüleri IE bellek incresing. Ama yüklenen tüm görüntüleri kaldırdıktan sonra bellek temizlenmez. Örneğin, sayfa yüklenmesinden hemen sonra IE işlemi 20MB kullanır, görüntüleri ekledikten sonra 35MB kullanır, sonra temizler - 30MB.

Herhangi bir sızıntı bulmak için sIEve aracını kullandım ama sızıntıya neden olmadı. IE bir şekilde görüntüleri önbelleğe alıyor mu? Dinamik olarak oluşturulmuş görüntü öğelerini işlemek için IE'de herhangi bir sorun var mı?

Güncelleştirme Firefox'ta bellek düzeyi sabit kalır, ancak IE'de artmaktadır.

cevap

1

Bu, IE ile ilgili bir sorun gibi görünüyor. Tüm tarayıcılar içeriği önbelleğe alacaktır, böylece tekrar gerektiğinde hızlı bir şekilde alınabilir. Yeterince akıllısa, IE bir süre sonra veya en azından yakın bir zamanda önbelleği temizler.

Bir seçenek, önbellek meta etiketi kullanmamaktır, ancak sayfalarınız her seferinde yeniden yüklenmek zorunda kaldıklarından, tüm sayfaları yavaşlatır.

Gerçek kullanımla ilgili olarak, bir web sitesi için oldukça büyük görünüyor, ancak bilgisayarlarda artık yeterince az olan en az 2 GB RAM (bazıları 1 GB ile hala mutlu) var. Bellek sorunları yaşayacağını sanmıyorum.

Bir yan not olarak, bazen FireFox uzun bir web devresinden sonra büyük miktarda bellek aldım. Bence sadece tarayıcılar akıllıca.

Bu tarayıcıların önbelleklerini daha sık temizlemeleri gerektiğini düşünüyorum - bir çok siteyi ziyaret ediyorsanız, oldukça hızlı bir şekilde oldukça büyük olacaktır.

+0

maksimum bellek sınırı sitemiz için 350mb olduğunu. Lütfen yanılıyorsam beni düzeltin ama bu oldukça fazla. Sitelerin çoğu 100MB sınırına ulaşmadı. – lostaman

+0

@lostaman - Evet bu inanılmaz derecede büyük. Önbellek meta etiketini hiç birşeyi önbelleğe almadığınız sürece bellek sorununu nasıl düzelttiğinizden emin değilim. Bellek kullanımının diğer tarayıcılar için ne olduğunu biliyor musunuz? Bu kullanışlı olurdu - bir IE sorunu ya da bir kod sorunu olsaydı açık olurdu. – Bojangles

+0

İlginç bir şey keşfetti. Google sitesini açıp örnek aramayı yoğun bir şekilde kullanmaya çalışırsam (sayfanın yenilenmemesi), IE'deki bellek düzeyi artar. Farklı kombinasyonları yazarak 200MB seviyesine ulaşmayı başardım. Firefox'ta her şey işe yarıyor. Ajax bileşenleri yoğun bir şekilde kullanılıyorsa, sadece IE önbellek içerikleri olabilir. – lostaman

1

jQuery sonra bellek sızıntılarını kullanarak ajax istekleri bir sürü yapıyorsanız bu neden olabilir:

http://bugs.jquery.com/ticket/6242

jQuery bir hata var. Ayrıntılar için yukarıdaki bağlantıya bakın - düzeltme 1.4.5 sürümü için planlanmıştır, ancak yorumlarda bazı kod örneklerini bulabilirsiniz.

+0

Bu düzeltmeyi uyguladım, ancak durumu değiştirmedi. Bellek limiti artmaya devam ediyor. – lostaman

0

IE, görüntülerin tümünü önbelleğe almıyor olabilir.

From jQuery docs

:

$.post('ajax/test.html', 
    function(data) { 
     $('.result').html(data); 
}); 

Bu örnek istenen HTML pasajını getirir ve sayfada ekler.POST ile getirilen

Sayfalar asla Bu isteklere hayır etkiye sahip), önbelleğe önbelleği yüzden ve jQuery.ajaxSetup (içinde seçenekleri ifModified vardır.

Bu çözüm kullanarak ölçü alınarak bir test yapabilirsiniz: biz tanık How to force a web browser NOT to cache images

İlgili konular