Яков Сироткин (yakov_sirotkin) wrote,
Яков Сироткин
yakov_sirotkin

Страницы из блоков

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

В Яндексе активно используют XSLT, а XML для него собирают с разных серверов. Если при каком-то вызове произошла ошибка, то в XML вместо данных будет соответствующий элемент и XSLT либо покажет нужный текст об ошибке, либо просто не выведет соответствующий блок. Разумеется, в Яндексе для этого разработан специализированный сервер, оптимизированный по производительности.

Но если масштаб вашего бизнеса не предполагает наличие кластера серверов, то какое решение будет оптимальным для вас? Было бы логично не генерировать кусочки XML в виде строк, а добавлять элементы в уже существующее DOM-дерево. А если вам всё-таки станет мало одного сервера? А если вам понадобится оптимизировать производительность и некоторые запросы выполнять локально? Я придумал следующую технологию: можно декларативно написать на XML, какие методы нужно вызвать, чтобы собрать все данные, а потом получить Java-код при помощи XSLT. При этом XSLT может сгенерировать какие угодно вызовы по любому протоколу, учитывая произвольные параметры. Эксперименты показали, что генерация Java-кода и его компиляция без проблем делаются внутри сервера и даже получается положить откомпилированный класс в кэш.

К сожалению, от веб-проектов я сейчас несколько отошёл и опробовать такой подход на практике у меня пока не получилось.
Tags: code
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 38 comments