Лучшие вопросы
Таймлайн
Чат
Перспективы
Edge Side Includes
Из Википедии, свободной энциклопедии
Remove ads
Edge Side Includes (ESI) — небольшой язык разметки для сборки динамического веб-контента на уровне граничных устройств (edge-устройств). Цель ESI — решение проблемы масштабирования веб-инфраструктуры[1]. ESI является применением концепции граничных вычислений.
Для веб-сайтов довольно распространена практика использования генерируемого контента. Это может быть связано с изменяющимся содержимым, таким как каталоги или форумы, или с персонализацией. Это создаёт проблему для систем кэширования. Для её решения группа компаний (Akamai, Art Technology Group, BEA Systems, Circadence Corporation, Digital Island, Inc., Interwoven, Inc., Open Market, чья технология, связанная с ESI, теперь принадлежит FatWire Software, Oracle Corporation и Vignette Corporation) разработала спецификацию ESI и представила её в W3C на утверждение. Редактором предложения был Марк Ноттингем.
Спецификация языка ESI 1.0 была представлена в Консорциум Всемирной паутины (W3C) для утверждения в августе 2001 года. W3C подтвердил получение, но не принял это предложение[1].
ESI реализован в некоторых сетях доставки контента (CDN), таких как Akamai, и в некоторых кэширующих прокси-серверах, таких как Varnish, Squid и Mongrel ESI[2], хотя многие из них реализуют спецификацию не полностью[3]. Akamai также добавляет дополнительные функции в поддерживаемую ими версию[4].
Remove ads
Синтаксис
Суммиров вкратце
Перспектива
Теги элементов ESI вставляются в HTML или другой текстовый контент во время его создания. Вместо того чтобы отображаться пользователям, эти теги ESI являются директивами, которые указывают обработчику ESI (ESI-процессору) выполнить определённое действие. Основанные на XML теги ESI указывают агенту обработки на стороне Edge, какое действие необходимо предпринять для завершения сборки страницы. Простым примером элемента ESI является тег `include`, который используется для включения внешнего по отношению к странице контента. Тег `include` ESI, размещённый внутри HTML-документа, будет выглядеть следующим образом[1]:
<esi:include src="http://example.com/1.html" alt="http://bak.example.com/2.html" onerror="continue"/>
В этом случае обработчик ESI попытается получить контент по URL-адресу из атрибута `src`, в случае неудачи — по URL-адресу из `alt`, а если и это не удастся — ничего не делать (согласно `onerror="continue"`). Система ESI обычно представляет собой кэширующий прокси-сервер, поэтому она может иметь локальную копию этих файлов и вставлять их без обращения к исходному серверу. В качестве альтернативы может кэшироваться вся страница с тегами ESI, и только запросы ESI будут отправляться на исходный сервер. Это позволяет устанавливать разное время кэширования для разных частей страницы или применять разные уровни персонализации.
Remove ads
Возможности
В ESI есть четыре основные возможности[1]:
- включения фрагментов страницы, как показано выше;
- переменные, которые можно устанавливать из cookie или HTTP-заголовков и затем использовать в других ESI-инструкциях или выводить в разметку;
- условия, позволяющие использовать разную разметку в зависимости от переменных, например, от того, установлен cookie или нет;
- обработка ошибок, позволяющая использовать резервный вариант (failover), если исходный сервер недоступен.
Remove ads
Альтернативы
Основными альтернативами ESI являются:
- сборка на исходном сервере с использованием SSI и различных видов серверных скриптов.
- использование клиентских скриптов и технологий, известных под общим названием Ajax (см. Динамическая веб-страница), в браузере.
- создание протокола между исходным сервером и граничным узлом, при котором повторяющийся контент будет автоматически включаться на стороне Edge, как в протоколе Railgun от Cloudflare[5].
- сборка в браузере с использованием веб-компонентов.
Примечания
Ссылки
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads