Исследование интернета не отвечает при загрузке большой страницы - PullRequest
4 голосов
/ 23 апреля 2010

У нас есть HTML-страница, отображаемая в браузере (IE), которая вызывает зависание браузера.Страница генерируется через серверный скрипт (ASP.NET и viewstate отключены).Загрузка страницы занимает много времени (это не проблема, так как мы можем воспроизвести ее на локальном компьютере) и иногда приводит к ошибке, не отвечающей скрипту.При отладке проблемы мы обнаружили, что размер HTML на стороне клиента составляет 4,73 МБ.Существует также много обхода DOM (с использованием JQuery) после того, как документ готов (jquery-document.ready).После загрузки страница просто зависает при любом пользовательском взаимодействии (прокрутке, наведении мыши) и т. Д. Пик загрузки процессора (25-50%) наблюдается во время загрузки и при любом пользовательском взаимодействии

Ответы [ 4 ]

2 голосов
/ 23 апреля 2010

Internet Explorer очень специфичен для DOM. Это очень хрупкий.

Я рекомендую следующее: http://msdn.microsoft.com/en-us/library/ms533019(VS.85).aspx http://blog.dynatrace.com/2009/12/12/understanding-internet-explorer-rendering-behaviour/ http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx

и самое главное: http://www.quirksmode.org/dom/innerhtml.html

1 голос
/ 24 апреля 2010

Если при загрузке возникает проблема с сообщением «Сценарий не отвечает», его можно обмануть, по крайней мере, в старых версиях IE. Разделите работу, которую вы делаете, на несколько задач с помощью setTimeout. Это приводит к тому, что IE теряет счет того, сколько всего времени выполнения используется.

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

0 голосов
/ 23 апреля 2010

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

Может быть, стоит переместить некоторые данные (или даже html, если они могут быть красиво разделены) в вызовы веб-сервисов / ajax? В любом случае поиск часто намного эффективнее.

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

0 голосов
/ 23 апреля 2010

Первое, на что я посмотрю, - это невероятно большой размер HTML, который получает клиент.Internet Explorer не известен быстрой обработкой больших объемов HTML-кода, особенно, если после этого вы выполняете большой обход DOM.Обработка DOM такого большого дерева объясняет скачок ЦП.

Действительно ли необходимо отправлять такое большое количество HTML клиенту?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...