SORU
11 Mart 2010, PERŞEMBE


Basit bir jQuery Ajax arama sızıntıları Internet Explorer bellek

Bir Ajax çağrısı yapar her saniye bir web sayfası oluşturdum. Internet Explorer 7, bellek sızdırıyor kötü (yaklaşık 15 dakika içinde 20 MB).

Program çok basittir. Sadece bir Ajax çağrısı yapan bir JavaScript işlevi çalışır. Sunucu, boş bir dize döndürür ve JavaScript kodu ile bir şey yapmaz. setTimeout fonksiyonu her saniye çalıştırmak için kullanıyorum, ve Drip şey izlemek için kullanıyorum.

Burada kaynak:

<html>
  <head>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load('jquery', '1.4.2');
      google.load('jqueryui', '1.7.2');
    </script>
    <script type="text/javascript">
      setTimeout('testJunk()',1000);
      function testJunk() {
        $.ajax({ url: 'http://xxxxxxxxxxxxxx/test', // The url returns an empty string
                 dataType: 'html',
                 success: function(data){}
               });
        setTimeout('testJunk()',1000)
      }
    </script>
  </head>
  <body>
    Why is memory usage going up?
  </body>
</html>

Nasıl kanamayı durduracak? Büyük bir tablo bu şekilde güncellemeler, ama bellek gigabayt yiyip bitirir sahipsiz bırakılan bu gerçek bir uygulama var.

EditTamam, bu yüzden bazı iyi öneriler sonra, kodu değiştirdim:

<html>
  <head>
    <script type="text/javascript" src="http://www.google.com/jsapi"></script>
    <script type="text/javascript">
      google.load('jquery', '1.4.2');
      google.load('jqueryui', '1.7.2');
    </script>
    <script type="text/javascript">
      setTimeout(testJunk,1000);
      function testJunk() {
        $.ajax({ url: 'http://xxxxxxxxxxxxxx/test', // The url returns an empty string
                 dataType: 'html',
                 success: function(data){setTimeout(testJunk,1000)}
               });
      }
    </script>
  </head>
  <body>
    Why is memory usage going up?
  </body>
</html>

Herhangi bir fark yaratmak için, ama gelmedi. DOM ile bir şey yaptığım yok, ve eğer ben Ajax yorum çağırmak, bellek sızıntısı durur. Sızıntı tamamen Ajax çağrısı gibi görünüyor. JQuery Ajax doğal olarak, nasıl özgür olabilirim eğer öyleyse döngüsel başvuru ve bir tür oluşturur? Bu arada, Firefox akıtmıyor.

Birisi test çalışan bir VM önerdi ve eğer sonuçlar aynı olup olmadığını görmek. Başka bir VM kurmak yerine, Internet Explorer 8 ile XP çalıştıran bir dizüstü bilgisayar buldum. Bu sergiler aynı sorun.

Bir WordPress kullanmak bazı eski sürümleri denedim ve iyi sonuçlar aldım, ama sorun jQuery Ajax terk ettim ve daha geleneksel (ve) çirkin Ajax ile gidene kadar uzakta tamamen gitmedi.

CEVAP
8 NİSAN 2010, PERŞEMBE


İşte jQuery 1.4.2 için önerilen bir düzeltme olarak bu birlikte bir WordPress kullanmak üstünde: hata link

--- jquery-1.4.2.js     2010-04-08 12:10:20.000000000 -0700
    jquery-1.4.2.js.fixed       2010-04-08 12:10:38.000000000 -0700
@@ -5219,7  5219,7 @@

                            // Stop memory leaks
                            if ( s.async ) {
-                                       xhr = null;
                                        xhr.onreadystatechange = null; xhr.abort = null; xhr = null;
                            }
                    }
            };

NOTBu jQuery 1.4.4, en iyi bahis sadece şimdi yükseltmektir. resmen sabittir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damian Winter

    Damian Winte

    27 ŞUBAT 2007
  • Liz Morgan

    Liz Morgan

    4 Aralık 2011
  • VOICE TV

    VOICE TV

    2 Aralık 2010