Статья только в электронной версии журнала
Когда компания решит сделать динамический контент распределенным, ей понадобится соответствующий механизм генерации страниц. Здесь на помощь придет спецификация ESI, где имеется ряд функций, обеспечивающих правильное кэширование и обновление страниц.
Прежде всего на основе языка разметки определяется порядок компоновки каждой Web-страницы. Для всех файлов указывается собственная конфигурация и способ управления, индивидуальная периодичность обновления в кэше, а также различные инструкции по перепроверке корректности данных.
В спецификации Edge Side Includes может быть определена и последовательность поиска обновленной информации. Условное включение в страницу осуществляется посредством сравнения приложений или переменных среды, например информации из файлов “куки”, которые идентифицируют подключившегося пользователя. Скажем, если пользователь уже интересовался биржевыми котировками, в страницу тут же включаются подобные данные. Такие переменные среды можно использовать как внутри программных операторов ESI, так и за пределами ESI-блока.
Заложенные в ESI функции исключения и обработки ошибок позволят разработчикам указывать альтернативные страницы и последовательность действий в случае недоступности запрошенного узла или документа. Если же возникнут серьезные сбои в работе системы или проблемы в сети, обойти их помогут явные операторы обработки исключений, определяющие реакцию сервера в подобных условиях.
Совершенная непредсказуемость часто меняющегося информационного наполнения заставила включить в спецификацию ESI правила отмены контента. Опираясь на них, сгруппированные серверы, системы управления содержимым, базы данных, заказные сценарии и приложения могут направлять HTML-сообщения в соответствующие кэши. На основании этих сообщений кэш или сеть доставки заменяет метаданные (информацию о месте хранения основных данных), связанные с конкретным объектом на пограничных серверах.
Будучи включен в сервер приложения, механизм отмены контента позволяет удалять из локальной кэш-памяти и сети доставки устаревшее и нежелательное содержимое. Этот процесс выполняется по командам триггера СУБД, сценария или другого компонента программы. Как только какой-либо элемент каталога будет помечен флажком, он сразу же станет недоступным для Web-узла.
Из серверных страниц JSP (JavaServer Pages - страницы Java-сервера) вызов компонентов ESI производится с помощью JESI (ESI for Java). Есть две модели применения этой спецификации, одна из которых предназначена для вновь создаваемых страниц JSP, а другая - для уже имеющихся. В первом случае разработчик может разделить страницу на независимые фрагменты JSP, отметив порядок их сборки в страницу. Место размещения таких фрагментов указывается с помощью встроенной в шаблон команды Include, а команды управления позволяют задавать дополнительные атрибуты шаблонов и фрагментов, например срок их годности. Кроме того, в стандарте ESI имеются средства управления параметрами, с помощью которых можно учитывать дополнительные пожелания, а команды обработки блоков кода помогут определить последовательность их выполнения при генерации шаблона. Все эти функции гарантируют, что пользователь увидит на сайте именно ту переменную информацию, которая ему нужна, независимо от места ее хранения.
Шаблоны ESI, позволяющие кэшировать фрагменты
Шаблоны ESI состоят из таких общих элементов Web-страниц, как логотипы, средства навигации и другие неизменные компоненты. Переменный контент создается с помощью файлов, имеющих разметку HTML/ESI, либо фрагментов с текстом и различными объектами. Воспользовавшись языком ESI, можно дать указание, в соответствии с которым сервер кэширования или сеть доставки найдет нужный фрагмент HTML и включит его в запрошенную страницу. Каждый такой фрагмент создается отдельно и имеет собственный срок годности TTL (time-to-live - время жизни), исчисляемый секундами, минутами, часами или сутками.