Почему IE7 такой медленный по сравнению с Safari? - PullRequest
1 голос
/ 26 июня 2009

У меня есть большая «сетка» данных, которая занимает около 40 секунд для генерации и вывода в виде обычного текста. Если обернуть текст форматированием таблицы html (с фиксированной шириной td), полное отображение в IE7 займет более 200 секунд, а в Safari - менее минуты. Небольшие «сетки» отображаются менее чем за 5 секунд в любом браузере, поэтому я не думаю, что это связано ни с чем, кроме объема данных. Могу ли я что-нибудь сделать на стороне сервера, чтобы ускорить отображение IE7? Говорить пользователям, чтобы они не били головой об стену, не вариант.

Ответы [ 7 ]

10 голосов
/ 26 июня 2009

Установить атрибут css для макета таблицы: исправлено на таблице. IE будет не пересчитывать размер таблицы для каждой добавляемой дополнительной строки / столбца, и это значительно ускорится.

Кстати, ссылка w3schools содержит хорошую информацию об этом.

макет таблицы принимает одно из трех значений: авто, фиксированное и наследование.

авто по умолчанию. Браузер должен загрузить всю таблицу, прежде чем он сможет рассчитать размеры и начать рендеринг. Это варьируется от медленного до очень медленного в зависимости от механизма рендеринга браузера.

фиксированный . Первая строка определяет ширину столбцов. Из-за этого браузер может отображать контент во время загрузки. Отсюда скорость увеличивается. В качестве второстепенного замечания: поскольку вся ширина, кроме верхней строки, игнорируется, вам не нужно отправлять данные ширины для оставшихся столбцов ... Это означает, что размер вашей страницы может быть немного меньше.

унаследуют . В основном, получите это значение от родителя.

3 голосов
/ 26 июня 2009

Даже сафари "под минуту" кажется невыносимым. Везде, где у меня есть что-то медленное, я выставляю индикатор прогресса и статистику о данных.

Идеей пагинации Казара может быть путь или прогрессивная загрузка, как предлагает Оскар Рейес.

Сколько строк и столбцов занимают эти данные?

1 голос
/ 26 июня 2009

Все это отличные предложения - но я нашел дымящийся пистолет! Когда IE отображает страницу, процесс под названием Mcshield.exe берет на себя компьютер. Поскольку сервер находится в одном окне, он замедляет как генерацию страницы, так и рендеринг. Теперь возникает вопрос: «Почему McAfee сокрушает IE, а не Safari?» - и я исследую это. Еще раз спасибо, переполнение стека!

1 голос
/ 26 июня 2009

Поскольку вы все равно программно генерируете эти данные, вы можете попробовать использовать тег

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

 Если вы не хотите делать это вручную, и у вас нет ссылок в таблице, вы можете использовать  веб-браузер elinks , чтобы отобразить HTML в виде обычного текста и поместить этот вывод в тегов. 

elinks -dump ./localfile.html

 Что касается вторичной заметки, если вы еще этого не сделали, вам следует убедиться, что вы распаковываете данные на стороне сервера, чтобы сократить время передачи. Для  IIS инструкции по включению gzipping можно найти здесь . Для  Apache, инструкции по включению mod_gzip можно найти здесь .  Для Apache попробуйте  Собственная документация Apache по mod_deflate . 
1 голос
/ 26 июня 2009

Почему IE7 такой медленный по сравнению с Safari?

Поскольку у них разные движки HTML, которые работают по-разному, разные алгоритмы, разные и т. Д.

Могу ли я что-нибудь сделать на стороне сервера для ускорения отображения IE7?

Возможно, вы могли бы попробовать использовать Ajax . Таким образом, воспринимаемая скорость будет намного лучше.

1 голос
/ 26 июня 2009

Может быть, разбить сетку, возможно, сделает ее более читабельной и быстрее в обоих браузерах?

1 голос
/ 26 июня 2009

Извините, но IE7 - это просто старый браузер, и поэтому он не так быстр, как Safari ... они могут увидеть некоторое увеличение производительности, если обновятся до IE8, Firefox или Chrome ...

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