У нас есть очень большой XML. Это статья с очень большим количеством комментариев. На медленном и нестабильном мобильном интернете её загрузки можно и не дождаться. Во время загрузки случается обрыв связи и XML остаётся не догруженным. Казалось бы можно просто обновить страницу и браузер бы просто догрузил недостающую часть. Но нет. Браузер грузит страницу заново и снова это не удаётся и мы видим ошибку вместо страницы. Но выход из этой ситуации есть. Мы разделим XML на маленькие кусочки которые будут успевать загрузиться на медленном канале и попадут в кеш. Бонусом мы получаем защиту от недогруза и прогрессивную загрузку. Этот файл содержит заголовок, описание, текст статьи и много-много комментариев. Если быть точнее, то 5962 комментария. У каждого комментария есть атрибут 'индекс'. Этот индекс используется другими комментариями в атрибуте 'на' для того чтобы указать что комментарий является ответом на комментарий, индекс которого указан. Это небольшой XSLT шаблон, который преобразует XML в полноценный xHTML и собирает из списка ветки комментариев. Ставим в браузере ограничение скорости GPRS. Открываем страницу и уходим пить чай. На экране будет предыдущая страница, до тех пор, пока не загрузится полностью XML файл и отработает XSLT шаблон. lorem-ipsum.xml Полная загрузка: 10,77 мин Нам надо разделить статью на часть с текстом статьи и несколько частей которые буду содержать комментарии. В браузере пользователя сразу будет отображена часть с текстом с статьи и по мерере загрузки частей комментариев будут появлятся и они.  Поскольку работать мы будем с XML файлом, то почему бы операции с ним не доверить также XSLT шаблонам. Шаблону задаётся количество комментариев на один XML файл и он комментариям дописывает атрибут 'страницы-ответов', в котором перечисляются индексы XML файлов, в которых будут находится ответы на этот комментарий. xslt\задать-страницы-ответов.xslt: Шаблон просто делит количество комментариев всего на количество комментариев на страницу и выводит целое число меньшее или равное результату. xslt\индекс-последней-страницы.xslt: Шаблон выбирает из статьи комментарии для заданного индекса('страница') XML файла. xslt\выделить-диапазон.xslt: Шаблон удаляет все комментарии, оставляя только текст статьи. xslt\убрать-комментарии.xslt: Для использования шаблонов в коммандной строке нам понадобится простая утилита msxsl.exe. Ей мы можем задать XML документ и XSLT шаблон и получить результат в stdout или в заданный файл. Теперь нам необходимо применить эти все шаблоны к XML файлу статьи. progressive.cmd lorem-ipsum.xml 100 progressive.cmd: Этот шаблон отображает текст статьи а в фрейме запускает загрузку статьи с комментариями. Как только блок комментариев появляется во фрейме он переносится на основную страницу. Второй шаблон в это время продожает подгружать комментарии и они появляются на основной странице сразу как только тот обработает очередную порцию. прогрессивная-загрузка.xslt Этот шаблон загружает основной текст статьи и подгружает комментарии из всех XML файлов. сборка-статьи.xslt Включаем в браузере ограничение скорости GPRS и запускаем загрузку страницы. lorem-ipsum/index.xml Загрузка текста статьи: 2,28с
Загрузка первых комментариев: 14,41с (только в FireFox)
Полная загрузка: 11,33 мин Шаблоны на GitHub Программист-фрилансер