Edge Side Includes
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].
Синтаксис
Теги элементов 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 будут отправляться на исходный сервер. Это позволяет устанавливать разное время кэширования для разных частей страницы или применять разные уровни персонализации.
Возможности
В ESI есть четыре основные возможности[1]:
- включения фрагментов страницы, как показано выше;
- переменные, которые можно устанавливать из cookie или HTTP-заголовков и затем использовать в других ESI-инструкциях или выводить в разметку;
- условия, позволяющие использовать разную разметку в зависимости от переменных, например, от того, установлен cookie или нет;
- обработка ошибок, позволяющая использовать резервный вариант (failover), если исходный сервер недоступен.
Альтернативы
Основными альтернативами ESI являются:
- сборка на исходном сервере с использованием SSI и различных видов серверных скриптов.
- использование клиентских скриптов и технологий, известных под общим названием Ajax (см. Динамическая веб-страница), в браузере.
- создание протокола между исходным сервером и граничным узлом, при котором повторяющийся контент будет автоматически включаться на стороне Edge, как в протоколе Railgun от Cloudflare[5].
- сборка в браузере с использованием веб-компонентов.
Примечания
- ↑ 1 2 3 4 Mark Hale; Dan Frantz; Larry Jacobs; Chris Newton; Conleth O'Connell; Mark Tsimelzon; John Brasso; Bill Weihl; Joseph Chung. ESI Language Specification 1.0 (англ.). W3C (4 августа 2001). Дата обращения: 10 ноября 2008.
- ↑ Mongrel ESI (англ.).
- ↑ Varnish ESI features (англ.). Дата обращения: 7 апреля 2011.
- ↑ EdgeSuite 5.0 ESI Extensions to the ESI 1.0 Specification (англ.). Дата обращения: 7 апреля 2011.
- ↑ Railgun™ (англ.) (июнь 2023).
Ссылки
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.