Если спросить разработчика браузера о том, на каких принципах строятся синтаксические анализаторы, входящие в состав современных веб-клиентов, он вряд ли сможет ответить. Конечно же, специалист в деталях расскажет, как производится разбор в том продукте, над которым работает он сам, но об остальных не сможет ничего утверждать по одной причине: до недавнего времени подходы к анализу кода документа ничем не регламентировались – разработчики сами решали, как строить программы грамматического разбора. С появлением HTML 5 такой «анархии» пришел конец. В новой спецификации указано, что веб-страница должна быть представлена в виде древовидной структуры DOM, которая позволит легко манипулировать ее элементами. И похоже, что в решении этого вопроса создатели HTML 5 немного поторопились…
Никто не спорит, что DOM – чрезвычайно удобный и эффективный инструмент для небольших веб-страниц, но он перестает быть таковым, если размер документа превосходит некоторый предел, зависящий от быстродействия компьютера и доступного объема памяти. Дело в том, что представление документа в виде дерева DOM – весьма ресурсоемкая операция, причем количество потребляемых ресурсов растет быстрее, чем размер обрабатываемого файла. Не в этом ли причина излишней «прожорливости» современных браузеров?
Что же произойдет, если придется работать с документами действительно большого объема? Этим вопросом, похоже, никто не задавался. А может быть, имеет смысл задуматься об альтернативном варианте разбора? Например, если объем исходного файла превосходит заранее определенное критическое значение, переключаться на использование технологии SAX? Если раньше для того, чтобы реализовать решение, снижающее потребность браузера в ресурсах, достаточно было доброй воли разработчика, то теперь появилось новое препятствие: спецификация. Тот, кто посягнет на нее, автоматически объявит себя нарушителем. Конечно, если его решение окажется успешным, можно будет говорить о том, что «победителей не судят», что спецификация – не догма и требует пересмотра. Но в случае неудачи моральные и материальные потери неизбежны.







