Java




JavaScript: создаем Человека - часть 2


Особенно плохо обстоят дела на новостных порталах. Сопоставьте, к примеру, объем отображаемого текста - меньше 2кБ () с весом загружаемой страницы - 165 кБ только html-кода () для далеко не самого перегруженного портала .

Что можно предпринять? Конечно, обязательно паковать, по каналу гнать сжатый HTML, и распаковывать его на конечном компьютере! Вопрос только, как это делать и чем.

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

И вот XML уже применяется на полную катушку. Да только одна незадача: если почитать последние статьи по этому языку, в каждой из них мы наткнемся на довольно неожиданный рефрен: "XML - это великий и могучий язык обработки и форматирования данных, это - один свет в окошке, рай земной и коммунизм в одном флаконе; но, естественно(?!), платой за его неизмеримые достоинства является здорово увеличенный(!) по сравнению с HTML размер результирующего файла." Грустно... Что же, не будем опускать руки. Есть ведь и другой способ: многие современные браузеры умеют работать с упакованными файлами. В числе других заголовков http-запроса браузер посылает серверу и список форматов компрессоров, которые он понимает.

Но тут опять не все так просто. Во-первых, разные браузеры поддерживают разные форматы (а то и вообще никаких). А во-вторых, если вы достаточно легко можете уговорить свой Apache эти файлы не перекодировать, то, пройдя через прокси, они, как правило, все равно превращаются во что-то, мягко говоря, своеобычное. Стало быть, этого делать нельзя: своими руками отсекать 10-15% потенциальных посетителей сайта - так же непрофессионально и по-детски, как писать сайты, корректно работающие только под Internet Explorer-ом.

Выходит, и тут мимо. Что же, не будем ждать милости от софтверных монстров и посмотрим, что можем сделать мы сами.

Есть среди используемых в сайтостроении языков один невзрачный и непритязательный. Да еще и в почтенном возрасте. Но именно к нему мы обратимся за помощью. В отличие от XML, язык JavaScript, предназначенный для обработки информации на стороне клиента, не обещает приносить вам тапочки и кофе в постель и писать за вас сайты в полпинка, но зато и в самом деле делает то, для чего был придуман. А значит, нужен нам именно он.

Допустимо ли использовать JavaScript в принципе? Я провел небольшое исследование на своем сайте на этот счет. Оказалось, что из более чем восьми тысяч отслеженных хостов JavaScript был отключен только у трех человек! Так что, наверно, вполне достаточно в тэгах <noscript> попросить этих троих (которые составили 0,0036% всех визитеров!) его включить. Но, конечно, если для вас это принципиально - кто мешает сделать проверку поддержки и оставить параллельно новому и существующий вариант сайта - эксклюзивно для лиц, повредившихся на почве сетевой безопасности? Тем более, что понадобится нам не пятая, - с поддержкой DOM, - а самая первая версия этого языка, так что нашим сайтом смогут насладиться даже самые изысканные эстеты - утонченные ценители антикварных браузеров.

Давайте посмотрим на любую страницу профессионально сделанного сайта. Практически наверняка мы увидим множество повторяющихся на ней элементов. Как правило, это вложенные таблицы, в строках которой выводится текст или картинки. Вот этими повторяющимися тэгами мы и займемся. Текст, за редкими исключениями, трогать нельзя - хотя бы потому, что мы хотим, чтобы наша страница нормально индексировалась поисковыми ботами, половина из которых в JavaScript - ни в зуб копытом. Но не переживайте: могу сказать, что, убрав только дублирующиеся тэги, размер HTML-кода реальной страницы можно сходу уменьшить от двух до десяти раз!

Начать нам будет проще всего с конца - с готовой HTML страницы. Будем пока считать, что ваш сайт состоит из набора статических страниц.

Итак, вы открываете страницу и видите там примерно такое безобразие, как показано на , за которым идет еще сотня строк (блоков "<tr>...</tr>") этой таблицы, отличающихся друг от друга только теми элементами, которые мы на врезке подчеркнули.

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

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

Первым делом, выберем разделитель между соседними строками. Им может служить любой символ, который вы заведомо не используете при выводе внутри нужной нам таблицы. Пусть это будет, скажем, "|".

Из html-файла выбрасываем все, что находится между тэгами <table> и </table> таблицы, которую мы обрабатываем. Вместо этого пишем там же <script>...</script> - контейнер, внутри которого будет находиться наша JavaScript-программа.

Все, что на врезке подчеркнуто (то есть, все меняющиеся данные), мы гуртом загоняем в переменную, разделяя выбранным символом "|" соседние значения и заканчивая строки html-таблицы парой "". И такой же разделитель поставим в самом начале текстовой строки:




Содержание  Назад  Вперед