увеличение использования памяти с помощью jquery - PullRequest
0 голосов
/ 20 декабря 2011

Я занимаюсь разработкой сайта, который интенсивно использует jquery (UI) для обеспечения хорошего пользовательского опыта.По какой-то (глупой) причине части этого сайта показываются в iframe, а также есть кнопка для обновления iframe для получения последних данных с сервера.

Проблема заключается в том, что каждый раз при обновлении iframeиспользование памяти увеличивается, что через некоторое время приводит к серьезным проблемам с памятью (протестировано в IE8 и 9).Но это происходит, только если загружена библиотека jquery.Такое поведение лучше всего видно при использовании Drip / Sieve .Для лучшего понимания проблемы я удалил весь ненужный код, ведущий к двум файлам ниже.С каждой перезагрузкой использование памяти увеличивается примерно на 800 кб.(попробуйте http://jsbin.com/asamid/7, если хотите воспроизвести)

Как я могу запретить jquery пожирать мою память?Есть ли способ вручную выгрузить все jquery перед перезагрузкой?

index.htm: (см. http://jsbin.com/asamid/7/edit#html,live)

<html>
  <head>
    <title>Memory Leak - Parent</title>
    <script type="text/javascript">
        function reload() {
            var frame = document.getElementById("testFrame");
            frame.src = "frame.htm";
        }
    </script>
  </head>
  <body>
    <a href="javascript:reload()" id="link">reload frame</a>
    <iframe id="testFrame" src="frame.htm" />
  </body>
</html>

frame.htm: (см. http://jsbin.com/ocuval/edit#html,live)

<html>
  <head>
    <title>Memory Leak - Frame</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  </head>
  <body>
    <h2>Test Frame</h2>
    <div>lorem ipsum</div><div>lorem ipsum</div><div>lorem ipsum</div><div>lorem ipsum</div><div>lorem ipsum</div><div>lorem ipsum</div>
  </body>
</html>

1 Ответ

0 голосов
/ 10 октября 2013

Поэкспериментируйте с одним или несколькими из следующих:

  • Используйте элемент объекта вместо iframe
  • Манипулируйте $. Фрагментами
  • Динамически создавать iframe с помощью конструктора jQuery
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...