Управление памятью и кеширование контента jquery-mobile - PullRequest
0 голосов
/ 13 октября 2011

Это сводит меня с ума.

В веб-приложении, которое я создаю с использованием jqm, на одной из страниц есть несколько разборных блоков со списками внутри, которые динамически заполняются при нажатии и разворачивании.Количество элементов в каждом списке составляет около 500. Это становится более серьезной проблемой, если у каждого элемента есть миниатюра.

Когда я свернул новый блок, я чувствую, как тяжело работает мой iphone.Это потому, что память, выделенная для браузера, заполняется, я полагаю.

Есть ли способ освободить память / кэш при открытии нового разборного блока?Или я могу предотвратить отображение данных в кэш-памяти, чтобы получить небольшую нагрузку на производительность?

Я открыт для любых других предложений.

Редакция от 13.10.2011

Вот код, который я использую

$('div.century').live('expand', function(){
    var idval = $(this).attr('id'); 
    console.log('expanded'+idval);

    $.get("helpers/getByCentury.php", { id: idval},
        function(data){
            $("#"+idval+" ul.ulist").html(data);
            $("#"+idval+" ul.ulist").listview('refresh');
            });
});

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Если вы хотите удалить данные, когда свернутый блок закрыт, вы можете привязать к событию collapse и удалить HTML-код внутри свертываемого блока в это время:

$('div.century').live('expand', function(){
    var idval = $(this).attr('id'); 
    if (typeof(console.log) == 'function') {
        console.log('expanded'+idval);
    }
    $.mobile.showPageLoadingMsg();

    $.get("helpers/getByCentury.php", { id: idval},
        function(data){
            $("#"+idval+" ul.ulist").html(data).listview('refresh');
            $.mobile.hidePageLoadingMsg();
        });
}).live('collapse', function () {
    $(this).find('.ulist').find('li').remove();
});

Я добрыйугадать структуру вашего разборного блока, так что вам может понадобиться настроить селектор, чтобы удалить соответствующие элементы.

Кроме того, я заметил, когда я проверял это, что событие collapse вызывается при загрузке страницы.

1 голос
/ 13 октября 2011

Если вы удаляете элементы из DOM и очищаете ссылки на объекты или элементы DOM из вашего javascript, то память, используемая этими объектами, может быть восстановлена ​​браузером через сборщик мусора. В javascript объект будет освобожден, когда на него больше не будет ссылок.

...