IE11 GZIP работает медленно для запросов AJAX
Так что это немного странная проблема, и я действительно ищу здесь лучшие практики и возможные решения.
Фон:
Я работаю над очень существенным корпоративным приложением. Это одностраничное приложение, и, кроме начальной загрузки, в приложении нет полной загрузки страниц. Почти все сервисные транзакции возвращают JSON.
Приложение создает большие наборы данных, некоторые из которых могут превышать от 1 до 2 МБ без сжатия. Это, очевидно, нежелательно, но, учитывая сложность нашего приложения и то, что оно делает, это также не то, что мы можем легко изменить существенным образом. Таким образом, мы включили динамическое сжатие в IIS для JSON и XML, что фактически сводит нас к 47 КБ при несжатом пакете JSON с 500 КБ.
(Получить IIS для динамического сжатия JSON и XML было довольно непросто, поэтому, если кому-то понадобятся подсказки, я с удовольствием приму.)
Проблемное состояние:
Мы рады уменьшить размер наших наборов данных, но отметили, что IE11, похоже, плохо справляется со сжатыми данными, возвращающимися в объект ответа AJAX. По сути, происходит то, что на уровне пользовательского интерфейса происходит видимая остановка, в то время как IE распаковывает данные GZipped, возвращаемые из запроса AJAX. Это не существенно (1,5 секунды), но довольно заметно. Другие протестированные нами браузеры не страдают от этого; Chrome, Safari, FireFox, Opera... все распаковывают и обрабатывают эти сжатые данные без видимой паузы в пользовательском интерфейсе. Таким образом, это, кажется, одна из очаровательных странностей IE.
Попытки решения:
Мы попытались уменьшить это путем оптимизации размеров наших объектов, а также путем настройки уровня сжатия. Из них уменьшение размера начального объекта - единственное, что успешно уменьшило задержку рендеринга; Уровень сжатия, кажется, делает мало или ничего. Но, как я уже сказал, мы достигли внешних пределов того, что мы можем сделать для оптимизации размеров наших данных.
Что мне нужно:
В идеале, кто-то там сталкивался с этой же проблемой и может предложить предложения относительно того, как мы можем обойти эту проблему с IE11. С другой стороны, я был бы рад, если бы кто-нибудь смог дать представление о том, что именно отличается от того, как IE обрабатывает ответы gZipped, и почему это различие сводится к полному прекращению всего, что происходит в пользовательском интерфейсе браузера.
Я далеко не эксперт по IIS, поэтому говорите медленно и используйте маленькие слова;-)
1 ответ
Там нет причин, почему IE должен быть медленнее здесь; Содержимое GZIP распространяется вниз по сетевому стеку, а используемый код представляет собой порт Zlib, практически идентичный тому, который используют все другие браузеры.
Вы использовали профилировщик IE F12 Developer Tools, чтобы посмотреть на производительность?
Если вы загружаете сайт во время работы Fiddler и для параметра "Декодирование" на его панели инструментов установлено значение "Включить", меняется ли производительность?