что это такое простыми словами, где применяется и что значит – SkillFactory
Хедер (от header — заголовок) — верхняя часть сайта, расположенная выше блока с основным контентом и отображаемая на всех страницах. Это первый элемент, который видит посетитель, поэтому одна из его важнейших задач — привлечь и удержать внимание пользователя. В хедере также размещаются ключевые навигационные компоненты сайта, такие как основное меню, поисковая строка, контактные данные и т.д. Русскоязычные разработчики и пользователи также используют термин «шапка сайта».
Этот элемент используется и имеет примерно одинаковую структуру на подавляющем большинстве сайтов. Причина в том, как посетитель считывает информацию со страницы. Исследования показывают, что глаза пользователя «сканируют» ее по одной из трех моделей:
- Диаграмма Гутенберга. Условно ее можно представить в виде буквы Z.
Сначала пользователь смотрит на левый верхний угол сайта, затем переводит взгляд вправо до конца строки. Далее по диагонали спускается в левый нижний угол и снова переводит взгляд вправо. - Z-паттерн. Это усложненная версия диаграммы Гутенберга, свойственная сайтам с блочной структурой. Пользователь также смотрит сначала на левый верхний угол, потом переводит взгляд вправо, спускается по диагонали вниз и снова вправо. Только из-за того, что блоков много, таких последовательных паттернов движения глаз несколько.
- F-паттерн. Согласно этой модели, пользователь сначала смотрит на левый верхний угол страницы, затем переводит взгляд вправо. Далее он спускается на 1 уровень ниже и снова смотрит слева направо. Если на первых двух «этажах» он не находит ничего интересного, то быстро просматривает оставшуюся часть сайта сверху вниз, а затем покидает страницу. Получается паттерн восприятия в виде латинской буквы F.

Курс Уверенный старт в IT Поможем определить подходящую вам IT-профессию и освоить её с нуля. Вы на практике попробуете разные направления: разработку на разных языках, аналитику данных, Data Science, менеджмент в IT. Это самый подходящий курс для построения карьеры в IT в новой реальности. Хочу в IT
Общее в этих трех моделях заключается в том, что пользователь сначала просматривает верхнюю часть сайта слева направо. Именно в этом месте и располагается хедер страницы. С учетом того, что в среднем у сайта есть всего 3–4 секунды, чтобы привлечь и удержать внимание посетителя, эта задача ложится в первую очередь на шапку.
По этой же причине хедер выполняется сквозным — то есть он присутствует на всех страницах сайта. Ведь пользователь может прийти из поиска или по ссылке как на главную, так и на любую другую страницу.
В структуре и дизайне сайта нет каких-то строгих законов, которые нужно неукоснительно исполнять. В конечном итоге то, как выглядит ресурс, определяется его направленностью и содержанием, особенностями психологии целевой аудитории, эстетическими предпочтениями самих владельцев и множеством других факторов. Однако на основе практического опыта использования сайтов можно выделить несколько общих критериев, которые помогают сделать шапку сайта максимально эффективной.
- Привлекательность. Так как хедер — это то, что пользователь видит при входе на страницу, сделать его нужно максимально заметным, простым для восприятия и эстетически привлекательным. Как вариант, можно оформить фон шапки фотографией или картинкой. В этом случае нужно подобрать его так, чтобы другие визуальные элементы были хорошо заметны, а глаза пользователя не уставали от просмотра.

- Информативность. В хедере должна содержаться основная информация, позволяющая пользователю быстро сориентироваться на сайте и выполнить важнейшие целевые действия — например, оформить покупку, проконсультироваться и т.д. Также необходимо, чтобы шапка на эмоциональном уровне сообщала посетителю, чему посвящен ресурс. Например, если это сервис по доставке пищи, то фоном хедера лучше сделать качественное и эстетичное изображение еды.
- Простота восприятия. Хедер не должен быть перегружен лишними визуальными элементами, чтобы они не сливались в единую информационную «кашу», в которой пользователю будет сложно разобраться. Менее значимые, но нужные пользователю компоненты (например поисковую строку) можно спрятать под компактными иконками.
- Скорость загрузки. Нужно учитывать, что хедер сильно влияет на то, как быстро будет загружаться сайт на ПК пользователя.
Поэтому, при всей визуальной привлекательности анимации и видео, такие элементы нужно использовать с осторожностью. От них не будет никакого толка, если пользователю придется ждать, пока прогрузится страница. Кроме того, динамические элементы могут привести к лишнему напряжению глаз. В оформлении хедера лучше сделать акцент на средствах HTML и CSS. - Соответствие общему дизайну. Внешний вид хедера должен не противоречить облику всей страницы. То есть в его дизайне нужно использовать аналогичную или похожую цветовую схему, стили выделения интерактивных объектов при наведении,
шрифты и другие визуальные эффекты. - Компактный размер. Не существует строгих требований к ширине и высоте хедера, но он не должен занимать значительную часть экрана и «вытеснять» собой контентную часть. Чрезмерно «раздутая» шапка потребует от пользователя проматывать страницу вниз, чтобы ознакомиться с основным содержанием.
Но так как среднестатистический пользователь по своей природе «ленив», он может просто этого не сделать. Для сайтов услуг, интернет-магазинов и информационных порталов лучше использовать шапки высотой 100–200 пикселей. Для лендингов (одностраничных сайтов), которые работают немного по иным принципам, этот показатель можно увеличить до 300–400 пикселей, чтобы было больше места для размещения интерактивных элементов (кнопок, калькуляторов, счетчиков времени и т.д.).
Если какие-то из этих требований не соблюдаются в оформлении шапки конкретного сайта, это не всегда означает ее недоработку. Например, клиентами отраслевых сайтов, посвященных продаже промышленного оборудования, являются не рядовые пользователи, а производственные предприятия. Эта целевая аудитория не нуждается в излишней рекламе, она обычно хорошо знает, что ей нужно. Поэтому в таких сайтах акцент в оформлении смещен с дизайна на содержание: минимум эстетики, но максимум контента (характеристик, фотографий и т.
Основные элементы, которые должны присутствовать в любом хедере:
- Айдентика. Под ней подразумевается совокупность всех визуальных элементов, ассоциирующих сайт с компанией в глазах пользователя. К айдентике относятся логотип, слоган, корпоративный стиль (цветовая схема, шрифты и т.д.). Их назначение состоит не только в ассоциировании ресурса с компанией, но также в привлечении и удержании внимания пользователя. Важно: логотип должен быть интерактивной ссылкой на главную страницу сайта. Это поможет пользователю быстро перейти на нее из любого раздела всего за один клик. Практика показывает, что логотип и слоган лучше размещать в шапке слева, так как именно туда большинство пользователей смотрят при заходе на сайт.
- Горизонтальное меню. Практика показывает, что большинство пользователей просматривают шапку слева направо по горизонтали. Это означает, что главное меню, содержащее основные разделы сайта, должно быть горизонтально ориентированным.
Если у веб-ресурса обширная и разветвленная структура с несколькими уровнями вложенности, то подразделы нужно сделать выпадающими при нажатии или наведении на кнопки основных разделов. Это позволит не загромождать меню менее значимыми элементами. - Поисковая строка. Для интернет-магазина, сайта услуг и информационного портала важно, чтобы пользователь мог сразу найти необходимую ему информацию без исследования всей структуры.
Лучше всего эту задачу решает поисковая строка, которая обычно располагается в центральной части с небольшим смещением вправо. Если шапка небольшая и для полноценной поисковой строки не хватает места, то ее можно скрыть под иконкой, изображающей лупу. - Контактная информация. В первую очередь это номер телефона (желательно городской или бесплатный с кодом 800) и адрес электронной почты на собственном домене сайта. Если компания работает в нескольких регионах, то в шапке лучше сделать их указатель с возможностью выбора.
Это нужно не только для пользователей, но и для поисковых роботов. Номер телефона и адрес почты должны быть кликабельными, чтобы пользователь одним нажатием мышки смог позвонить в компанию или открыть форму отправки письма. Также следует предусмотреть кнопку «Заказать звонок» — она позволит посетителю созвониться с менеджером сайта в удобный для обеих сторон момент.
Помимо общих элементов, в шапке сайта обычно располагается несколько дополнительных — их набор определяется типом веб-ресурса:
- Корзина. Этот элемент необходим для интернет-магазинов, чтобы пользователь мог оформить заказ, находясь на любой странице сайта.
- Иконки соцсетей. Сегодня практически любая компания, поставляющая товары и/или услуги, представлена в социальных сетях. Разместив в шапке сайта иконки-ссылки на свои страницы в соцсетях, она получает дополнительный инструмент по привлечению пользователей.

- Кнопка оформления заказа. Этот элемент используется на сайтах услуг, и его название может различаться в зависимости от направления деятельности компании. Например, на сайте медицинского учреждения это «Записаться на прием», у юридической фирмы — «Заказать консультацию» и т.д. Кнопка оформления заказа должна быть хорошо различимой и достаточно крупной, а при наведении на нее курсора — менять цвет и/или размер. Так пользователь поймет, что это интерактивный элемент.
- Режим работы. В шапке лучше упомянуть, по каким дням и часам компания работает с посетителями, даже если это происходит в режиме 24/7. Если менеджеры отвечают ограниченное время, данная информация позволит пользователю связаться с ними в подходящий момент.
Очевидно, в хедер можно вставить множество различных элементов. Однако здесь важно соблюсти баланс между функциональностью, эстетичностью и простотой восприятия.
Чрезмерная перегруженность шапки сайта, скорее всего, отпугнет пользователя, у него не останется желания пролистывать страницу дальше, даже если в контентной части будет нужная ему информация, услуга или товар.
Внешний вид шапки сайта во многом определяется тем, кто является его целевой аудиторией. Рассмотрим два основных направления.
B2C (для потребителей). Высокая конкуренция за внимание простых пользователей определяет привлекательный дизайн шапки сайта. Этой целевой аудитории важно, чтобы она выглядела эстетично, ведь среднестатистический потребитель часто совершает целевые действия (покупку товара, заказ услуги), подчиняясь эмоциям. При этом не обязательно привлекательность означает яркие цвета, картинки или даже анимацию. Напротив, современный потребитель достаточно искушен в вопросах дизайна. Тем не менее запрос на эстетическую привлекательность хедера остается актуальным.
Он может быть ярким или минималистичным, но всегда соответствовать вкусам целевой аудитории. Для некоторых групп потребителей (например мам или детей) важно, чтобы сайт ассоциировался с приятными эмоциями. Здесь можно сделать акцент на теплых цветах, изображениях улыбающихся детей, мультипликационных персонажей и т.д.
B2B (для бизнеса). Предприниматели в своих решениях меньше руководствуются эмоциями, больше — целесообразностью и имеющимся бюджетом. Соответственно, для них эстетическое оформление шапки сайта отходит на второй план, а в приоритете остаются удобство и простота. Это не значит, что шапку на таких сайтах не нужно оформлять вообще — просто делать это придется иначе. Можно отказаться от красивого фона, но логотип компании лучше оставить, ведь предпринимателю важно понимать и запомнить, с кем он будет сотрудничать. А освободившееся от графических элементов место можно заполнить дополнительной полезной информацией: например, регионом и режимом работы, реквизитами компании, владеющей сайтом, и т.
д.
Если у компании уже есть выработанный фирменный стиль (логотип, шрифты, цветовая схема и т.д.), то в дизайне хедера нужно использовать его элементы. То есть взять за основу предоставленный заказчиком брендбук, рекламные материалы, каталоги продукции. Кроме того, каждое изменение дизайна и юзабилити шапки сайта следует проверять на А/Б-тестах. Это позволит сразу отсеивать неэффективные решения.
Курс Уверенный старт в IT Поможем определить подходящую вам IT-профессию и освоить её с нуля. Вы на практике попробуете разные направления: разработку на разных языках, аналитику данных, Data Science, менеджмент в IT. Это самый подходящий курс для построения карьеры в IT в новой реальности. Хочу в IT
| Criteo | banner, Одновременная передача баннеров и InPage видео»}}»> | www. criteo.com |
| Soloway | banner, InPage, In-Stream, Одновременная передача баннеров и InPage видео»}}»> | www.soloway.ru |
| HPMD (Happy Monday) | banner, InPage, In-Stream | www.hpmd.ru |
| Buzzoola | banner, InPage, Одновременная передача баннеров и InPage видео»}}»> | www.buzzoola.com |
| Mytarget | banner, Одновременная передача баннеров и InPage видео»}}»> | target. my.com |
| Between Digital | banner, InPage, In-Stream, Одновременная передача баннеров и InPage видео»}}»> | betweendigital.com |
| All in One Media | banner | aio.media |
| GetIntent | banner | getintent.com |
| Tinkoff | banner | tinkoff.ru |
| Videonow | banner, InPage, Одновременная передача баннеров и InPage видео»}}»> | videonow. ru |
| Relap | banner | relap.io |
| Pladform | banner | distribution.pladform.ru |
| AlfaDart | banner | alfadart.com |
| Fotostrana | banner | fotostrana.ru |
| Hybrid | banner, Одновременная передача баннеров и InPage видео»}}»> | hybrid. ai |
| Mgid | banner | mgid.com |
| DGT SSP | banner | www.digitas.com |
| ADSPEND | banner, InPage | adspend.ru |
| MediaToday | banner, InPage | mediatoday.ru |
| Redllama | banner, InPage | redllama.ru |
| Qvant DSP | banner, InPage | qvant. ru |
| Adtelligent | banner, InPage | adtelligent.com |
| OTM | banner, InPage, In-Stream | otm-r.com |
| Segmento | banner, InPage, In-Stream | segmento.ru |
| Bidvol | banner | bidvol.com |
| Sape | banner, In-Stream, Одновременная передача баннеров и InPage видео»}}»> | sape. ru |
| Astralab | banner, Одновременная передача баннеров и InPage видео»}}»> | astralab.ai |
| AdMixer | banner, Одновременная передача баннеров и InPage видео»}}»> | admixer.com |
| Gnezdo | banner | gnezdo.online |
| MTS | banner, In-Stream, Одновременная передача баннеров и InPage видео»}}»> | marketolog.mts.ru |
| Media Instinct Group | banner, Одновременная передача баннеров и InPage видео»}}»> | mediainstinctgroup. ru |
| Kadam | banner | kadam.net |
| MediaSniper | banner, Одновременная передача баннеров и InPage видео»}}»> | mediasniper.ru |
| IMHO (через Adfox HB) | banner, In-Stream, Одновременная передача баннеров и InPage видео»}}»> | imho.ru |
| Adtech Digital (через Adfox HB) | banner, InPage, In-Stream, Одновременная передача баннеров и InPage видео»}}»> | adtech-digital. ru |
| AdSmart, Interpool (через Adfox HB) | banner, Одновременная передача баннеров и InPage видео»}}»> | inpool.ru |
| WiseUP (через Adfox HB) | banner, Одновременная передача баннеров и InPage видео»}}»> | wiseupmedia.ru |
| Digital Sail (через Adfox HB) | banner, Одновременная передача баннеров и InPage видео»}}»> | dsail.by |
| Bestseller (через Adfox HB) | banner, Одновременная передача баннеров и InPage видео»}}»> | bseller. ru |
| Roden Media (через Adfox HB) | banner, In-Stream, Одновременная передача баннеров и InPage видео»}}»> | roden-media.ru |
| Digital Caramel (через Adfox HB) | banner, Одновременная передача баннеров и InPage видео»}}»> | digitalcaramel.com |
Источник: convertmonster.ru
157 просмотров
Дизайн сайта состоит из множества взаимосвязанных элементов, которые создают цельную картинку. Для создания качественного и конверсионного сайта нужно прорабатывать каждый его элемент. Поэтому в этой статье разберемся, как сделать хедер и футер сайта, которые помогут увеличить конверсию сайта.
Что такое хедер и футер сайта
Хедер сайта, или шапка сайта — это его верхняя часть. Header сайта располагается как отдельный блок, отображающийся вверху на каждой странице сайта. Как правило, хедер содержит в себе ссылки на разделы сайта или важные категории, название компании, логотип, а также контактные данные.
Шапка сайта (header) может быть идентичной на каждой странице сайта, или же различаться. При использовании разных хедеров на страницах нужно следить за тем, чтобы примеры header для внутренней страницы сайта были сокращенным вариантами хедера, применяемого на главной странице.
Красивый header для сайта нужен не только для придания индивидуальности, но и для увеличения процента конверсии, а также перемещения пользователя по сайту. Поэтому некачественно выполненный хедер сайта заставляет пользователей уходить с него.
Header и footer составляют структуру сайта, но header сайта является противоположным элементом footer.
Футер, или подвал сайта — это часть, которая находится внизу страниц сайта.
Футер сайта располагается ниже основного контента, что позволяет ему выполнять определенные функции.
Так, footer сайта содержит такие элементы, как карта сайта, полезные ссылки, отзывы, награды, социальные сети, ссылки на второстепенные задачи и так далее. Поэтому красивый футер для сайта может способствовать дополнительному числу лидов. Некоторым пользователям могут быть интересны дополнительные предложения, находящиеся в футере, или захочется посмотреть на социальные сети компании.
Как сделать хедер для сайта
Для того чтобы сделать header для сайта, разберемся в первую очередь с его размером. Размер хедера для сайта составляет 1024 px в ширину, но он может варьироваться от 1024 px до 1920 px.
Разберем 5 основных советов по созданию хедера сайта.
1. Выберите, что будет содержать хедер.
Как сказано выше, хедер может включать в себя различные элементы и информацию. Поэтому важно выбрать те приоритетные данные, которые будут на нем размещены.
Необходимым является размещение названия, логотипа, навигации, заголовка страницы, корзины покупателя, вход/выход.
2. Решите, какой у хедера будет шрифт.
Если у компании есть фирменный шрифт, то лучше использовать его. Если нет, используйте простые и хорошо читаемые шрифты, которые сочетаются со шрифтом остальных частей сайта.
3. Используйте логотип в хорошем качестве.
В хедере, как правило, не используются изображения, за исключением логотипа. Поэтому он должен иметь высокое разрешение.
4. Не перегружайте шапку ненужной информацией.
Перегруженная шапка сайта может негативно повлиять на его конверсию. Пользователи не будут читать много информации, чтобы найти то, что нужно им. Оставляйте только то, что способствует главной цели — привлечению лидов.
5. Выбирайте фиксированный скролинг.
Если в шапку сайта вы поместили важную информацию, то используйте фиксированный скролинг. Это нужно для того, чтобы эта информация оставалась на виду у пользователя.
Например, это эффективно, когда в хедере есть кнопка лидогенерации.
При создании хедера нередко возникают сложности. Есть правила html для header сайта, которые помогут создать качественный хедер:
- В хедере название и контакты не должны быть отображены как картинки. Эти разделы должны быть в виде текста, чтобы их воспринимали поисковые системы.
- Нельзя использовать изображения, которые много весят, а также флеш-элементы и большое количество графики. Их применение увеличит время загрузки страницы, что негативно скажется на посещаемости сайта.
- Горизонтальное меню нужно отображать, используя исключительно текст. Картинки и флеш не подходят. Это важно, чтобы в дальнейшем без проблем вносить в него изменения.
- Применение только h2 заголовка, который является одинаковым для каждой страницы сайта, негативно скажется, когда вы займетесь продвижением сайта.

- Разрабатывайте HTML-шапки. Это проще, чем использовать хедеры из каринки или флеш-элементов. В качестве альтернативы в дизайны, которые работают на скриптах, можно добавлять динамические объекты.
- Следите за высотой шапки сайта. Если работаете над информационным ресурсом, то оптимальный размер высоты шапки составляет 100-200 пикселей. Для лендингов, а также сайтов-визиток можно сделать хедер выше. Важно, чтобы хедер не мешал пользователям воспринимать контент на сайте.
Примеры хедера сайта
Как сделать футер сайта
1. Определитесь с видом футера.
Помимо стандартного футера есть два варианта футеров для сайта. Во-первых, футер для бесконечного скролла, когда новый контент постоянно подгружается при прокрутке вниз. В таком случае футер переносят и он становится сбоку от бесконечной ленты. Во-вторых, контекстный футер, который подбирается для каждой страницы индивидуально.
2. Выберите элементы, которые будут отображены на футере.
Важно понимать, что элементы футера не должны дублировать хедер. Например, на футер можно поместить ссылки на полезные статьи, отзывы, взаимодействие с клиентами, ссылки на вторичные задачи и так далее.
3. Не делайте больше, чем два уровня иерархии.
Футер не должен выглядеть сложным или нагроможденным. Делайте его простым и понятным любому пользователю. Минимализм и лаконичность — ключ к хорошему футеру.
4. Делайте футер заметным, а текст разборчивым.
Посетители сайта должны видеть, что им предлагается. Футер не должен быть незаметным или содержать мелкий шрифт. Шрифт футера должен быть меньше основного, но быть читаемым.
5. Используйте корректные имена ссылок
Ссылки на футере должны называться так, чтобы пользователь понимал, что он получит, когда по ним перейдет. Используйте понятные названия ссылок. В этом разделе лучше не креативить.
Примеры footer для сайта
В качестве примеров футера сайта можно привести следующие варианты:
заголовков HTTP — HTTP | MDN
Заголовки HTTP позволяют клиенту и серверу передавать дополнительную информацию с HTTP-запросом или ответом.
Заголовок HTTP состоит из имени без учета регистра, за которым следует двоеточие ( : ), а затем его значение. Пробел перед значением игнорируется.
Пользовательские проприетарные заголовки исторически использовались с префиксом X-, но это соглашение устарело в июне 2012 г. из-за неудобств, которые оно вызвало, когда нестандартные поля стали стандартными в RFC 6648; другие перечислены в реестре IANA, исходное содержание которого определено в RFC 4229.. IANA также поддерживает реестр предлагаемых новых заголовков HTTP.
Заголовки могут быть сгруппированы в соответствии с их контекстом:
- Заголовки запроса содержат дополнительную информацию о ресурсе, который нужно извлечь, или о клиенте, запрашивающем ресурс.
- Заголовки ответа содержат дополнительную информацию об ответе, например его местонахождение или сервер, который его предоставил.
- Заголовки представления содержат информацию о теле ресурса, например о его типе MIME или примененном кодировании/сжатии.

- Заголовки полезной нагрузки содержат независимую от представления информацию о данных полезной нагрузки, включая длину содержимого и кодировку, используемую для транспортировки.
Заголовки также можно сгруппировать в соответствии с тем, как их обрабатывают прокси:
-
Соединение -
Поддержание активности -
Прокси-аутентификация -
Прокси-авторизация -
ТЭ -
Прицеп -
Кодирование передачи -
Обновление(см. также механизм обновления протокола).
Эти заголовки должны передаваться конечному получателю сообщения: серверу для запроса или клиенту для ответа. Промежуточные прокси-серверы должны повторно передавать эти заголовки без изменений, а кэши должны сохранять их.
Эти заголовки имеют смысл только для одного соединения на транспортном уровне, и не должен повторно передаваться прокси или кэшироваться.
Обратите внимание, что с помощью заголовка Connectionмогут быть установлены только заголовки переходов.
-
WWW-аутентификация Определяет метод аутентификации, который следует использовать для доступа к ресурсу.
-
Авторизация Содержит учетные данные для аутентификации агента пользователя на сервере.
-
Прокси-аутентификация Определяет метод аутентификации, который следует использовать для доступа к ресурсу за прокси-сервером.
-
Прокси-авторизация Содержит учетные данные для аутентификации агента пользователя на прокси-сервере.
-
Возраст Время в секундах, в течение которого объект находился в кэше прокси.
-
Кэш-Контроль Директивы для механизмов кэширования как в запросах, так и в ответах.

-
Очистка данных сайта Очищает данные просмотра (например, файлы cookie, хранилище, кеш), связанные с запрашивающим веб-сайтом.
-
Истекает Дата/время, после которого ответ считается устаревшим.
-
Прагма Заголовок, зависящий от реализации, который может иметь различные эффекты в любом месте цепочки запрос-ответ. Используется для обратной совместимости с кэшами HTTP/1.0, где
Заголовок Cache-Controlеще не присутствует.-
ПредупреждениеУстаревший Общая предупреждающая информация о возможных проблемах.
Подсказки HTTP-клиента — это набор заголовков запросов, которые предоставляют полезную информацию о клиенте, такую как тип устройства и сетевые условия, и позволяют серверам оптимизировать то, что обслуживается для этих условий.
Серверы заблаговременно запрашивают заголовки клиентских подсказок, которые их интересуют, у клиента, используя Принять-CH . Затем клиент может включить запрошенные заголовки в последующие запросы.
-
Принять-CHЭкспериментальный - Серверы
могут объявить о поддержке клиентских подсказок, используя поле заголовка
Accept-CHили эквивалентный элемент HTMLс атрибутомhttp-equiv. -
Принять-CH-LifetimeЭкспериментальный Устаревший Серверы могут попросить клиента запомнить набор клиентских подсказок, которые сервер поддерживает в течение определенного периода времени, чтобы разрешить доставку клиентских подсказок при последующих запросах к источнику сервера.

Различные категории клиентских подсказок перечислены ниже.
Подсказки клиента агента пользователя
Подсказки клиента UA представляют собой заголовки запросов, предоставляющие информацию о пользовательском агенте и платформе/архитектуре, на которой он работает:
-
Сек-Ч-УАЭкспериментальный Маркировка и версия пользовательского агента.
-
Сек-Ч-UA-АрхЭкспериментальный Базовая архитектура платформы пользовательского агента.
-
Sec-CH-UA-битностьЭкспериментальный Разрядность базовой архитектуры ЦП пользовательского агента (например, «64» бит).

-
Sec-CH-UA-Полная версияУстаревший Строка полной семантической версии пользовательского агента.
-
Sec-CH-UA-Полный список версийЭкспериментальный Полная версия для каждого бренда в списке брендов пользовательского агента.
-
Sec-CH-UA-MobileЭкспериментальный Пользовательский агент работает на мобильном устройстве или, в более общем смысле, предпочитает «мобильный» пользовательский интерфейс.
-
Sec-CH-UA-МодельЭкспериментальный Модель устройства агента пользователя.

-
Sec-CH-UA-ПлатформаЭкспериментальный Базовая операционная система/платформа пользовательского агента.
-
Sec-CH-UA-Платформа-ВерсияЭкспериментальный Базовая версия операционной системы пользовательского агента.
Подсказки клиента устройства
-
Content-DPRУстаревший Экспериментальный Заголовок ответа , используемый для подтверждения отношения устройства изображения к пикселю в запросах, где подсказка клиента
DPRиспользовалась для выбора ресурса изображения.
-
Устройство-памятьУстаревший Экспериментальный Приблизительный объем доступной оперативной памяти клиента. Это часть API памяти устройства.
-
ДПРУстаревший Экспериментальный Соотношение пикселей клиентского устройства (DPR), которое представляет собой количество пикселей физического устройства, соответствующее каждому пикселю CSS.
-
Ширина области просмотраУстаревший Экспериментальный Число, указывающее ширину области просмотра макета в пикселях CSS.
Предоставленное значение пикселя представляет собой число, округленное до наименьшего следующего целого числа (т. е. максимальное значение).-
ШиринаУстаревший Экспериментальный Число, указывающее требуемую ширину ресурса в физических пикселях (т. е. собственный размер изображения).
Подсказки сетевого клиента
Подсказки сетевого клиента позволяют серверу выбирать, какая информация будет отправлена, в зависимости от выбора пользователя, пропускной способности сети и задержки.
-
Нисходящий канал Приблизительная пропускная способность соединения клиента с сервером в Мбит/с. Это часть API сетевой информации.
-
ЕСТ Эффективный тип подключения («сетевой профиль»), который лучше всего соответствует задержке и пропускной способности подключения.
Это часть API сетевой информации.-
РТТ Время приема-передачи (RTT) прикладного уровня в миллисекундах, включая время обработки сервером. Это часть API сетевой информации.
-
Сохранение данныхЭкспериментальный Логическое значение, указывающее предпочтение пользовательского агента по сокращению использования данных.
-
Последнее изменение Дата последней модификации ресурса, используемая для сравнения нескольких версий одного и того же ресурса. Он менее точен, чем
ETag, но его легче вычислить в некоторых средах. Условные запросы с использованиемIf-Modified-SinceиIf-Unmodified-Sinceиспользуют это значение для изменения поведения запроса.-
ETag Уникальная строка, идентифицирующая версию ресурса.
Условные запросы с использованием If-MatchиIf-None-Matchиспользуют это значение для изменения поведения запроса.-
Если-совпадение Делает запрос условным и применяет метод, только если сохраненный ресурс соответствует одному из заданных ETag.
-
Если не совпадает Делает запрос условным и применяет метод, только если сохраненный ресурс не соответствует ни одному из заданных ETag. Это используется для обновления кешей (для безопасных запросов) или для предотвращения загрузки нового ресурса, когда он уже существует.
-
Если-Изменено-С Делает запрос условным и ожидает, что ресурс будет передан только в том случае, если он был изменен после указанной даты. Это используется для передачи данных только тогда, когда кэш устарел.
-
Если-без изменений-с Делает запрос условным и ожидает, что ресурс будет передан только в том случае, если он не был изменен после указанной даты.
Это обеспечивает согласованность нового фрагмента определенного диапазона с предыдущими или реализует систему управления оптимистичным параллелизмом при модификации существующих документов.-
Варьируются Определяет, как сопоставлять заголовки запросов, чтобы решить, можно ли использовать кешированный ответ, а не запрашивать новый с исходного сервера.
-
Соединение Определяет, остается ли сетевое подключение открытым после завершения текущей транзакции.
-
Поддержание активности Определяет, как долго постоянное соединение должно оставаться открытым.
Заголовки согласования содержимого.
-
Принять Информирует сервер о типах данных, которые могут быть отправлены обратно.
-
Принять кодировку Алгоритм кодирования, обычно алгоритм сжатия, который можно использовать для возвращаемого ресурса.

-
Принять язык Сообщает серверу человеческий язык, который сервер должен отправить обратно. Это подсказка, и она не обязательно находится под полным контролем пользователя: сервер всегда должен обращать внимание на то, чтобы не переопределить явный выбор пользователя (например, выбор языка из раскрывающегося списка).
-
Ожидать Указывает на ожидания, которые должны быть выполнены сервером для правильной обработки запроса.
-
Макс-Форвардс При использовании
TRACEуказывает максимальное количество переходов, которые может выполнить запрос, прежде чем он будет отражен отправителю.
-
Печенье Содержит сохраненные файлы cookie HTTP, ранее отправленные сервером с
Заголовок Set-Cookie.-
Набор файлов cookie Отправлять файлы cookie с сервера в пользовательский агент.

Узнайте больше о CORS здесь.
-
Доступ-Контроль-Разрешение-Происхождение Указывает, можно ли поделиться ответом.
-
Учетные данные контроля доступа Указывает, может ли быть раскрыт ответ на запрос, если флаг учетных данных установлен в значение true.
Используется в ответ на предварительный запрос, чтобы указать, какие заголовки HTTP можно использовать при выполнении фактического запроса.
-
Методы разрешения доступа Указывает методы, разрешенные при доступе к ресурсу в ответ на предварительный запрос.
Указывает, какие заголовки могут быть представлены как часть ответа, перечисляя их имена.
-
Access-Control-Max-Age Указывает, как долго результаты предварительного запроса могут кэшироваться.

Используется при отправке предварительного запроса, чтобы сообщить серверу, какие заголовки HTTP будут использоваться при выполнении фактического запроса.
-
Метод запроса управления доступом Используется при отправке предварительного запроса, чтобы сообщить серверу, какой метод HTTP будет использоваться при выполнении фактического запроса.
-
Происхождение Указывает, откуда исходит выборка.
-
Время-Разрешение-Происхождение Указывает источники, которым разрешено просматривать значения атрибутов, полученные с помощью функций API синхронизации ресурсов, которые в противном случае были бы сообщены как нулевые из-за ограничений между источниками.
-
Контент-Расположение Указывает, должен ли переданный ресурс отображаться встроенным (поведение по умолчанию без заголовка) или он должен обрабатываться как загрузка, и браузер должен отображать диалоговое окно «Сохранить как».

-
Длина содержимого Размер ресурса в десятичном числе байтов.
-
Тип содержимого Указывает тип носителя ресурса.
-
Кодирование контента Используется для указания алгоритма сжатия.
-
Язык содержимого Описывает человеческий язык (языки), предназначенный для аудитории, чтобы пользователь мог различать язык в соответствии с предпочитаемым пользователем языком.
-
Расположение содержимого Указывает альтернативное расположение возвращаемых данных.
-
Переадресовано Содержит информацию от клиентской стороны прокси-серверов, которая изменяется или теряется, когда прокси участвует в пути запроса.
-
X-Forwarded-ForCheck cross-browser support before using.»> Нестандартный Определяет исходные IP-адреса клиента, подключающегося к веб-серверу через прокси-сервер HTTP или балансировщик нагрузки.
-
X-Перенаправленный хостНестандартный Идентифицирует исходный хост, запрошенный клиентом для подключения к вашему прокси-серверу или балансировщику нагрузки.
-
X-Forwarded-ProtoНестандартный Идентифицирует протокол (HTTP или HTTPS), который клиент использовал для подключения к вашему прокси-серверу или балансировщику нагрузки.
-
Через Добавляется прокси-серверами, как прямыми, так и обратными, и может появляться в заголовках запросов и заголовков ответов.

-
Местоположение Указывает URL-адрес для перенаправления страницы.
-
От Содержит адрес электронной почты в Интернете для пользователя-человека, который управляет запрашивающим пользовательским агентом.
-
Хост Указывает доменное имя сервера (для виртуального хостинга) и (необязательно) номер порта TCP, на котором сервер прослушивает.
-
Реферер Адрес предыдущей веб-страницы, с которой была осуществлена ссылка на текущую запрошенную страницу.
-
Реферальная политика Определяет, какую информацию о реферере, отправляемую в заголовке
Referer, следует включать в сделанные запросы.-
Агент пользователя Содержит характеристическую строку, которая позволяет одноранговым узлам сетевого протокола идентифицировать тип приложения, операционную систему, поставщика программного обеспечения или версию программного обеспечения запрашивающего программного агента пользователя.
См. также справочник по строкам пользовательского агента Firefox.
-
Разрешить Перечисляет набор методов HTTP-запросов, поддерживаемых ресурсом.
-
Сервер Содержит информацию о программном обеспечении, используемом исходным сервером для обработки запроса.
-
Допустимые диапазоны Указывает, поддерживает ли сервер запросы диапазона, и если да, то в каких единицах может быть выражен диапазон.
-
Диапазон Указывает часть документа, которую должен вернуть сервер.
-
Если-диапазон Создает условный запрос диапазона, который выполняется только в том случае, если заданный etag или дата соответствуют удаленному ресурсу. Используется для предотвращения загрузки двух диапазонов из несовместимой версии ресурса.

-
Диапазон содержимого Указывает, где в полном теле сообщения находится частичное сообщение.
-
Политика внедрения кросс-происхождения(COEP) Позволяет серверу объявить политику внедрения для данного документа.
-
Политика открытия кросс-происхождения(COOP) Запрещает другим доменам открывать/управлять окном.
-
Политика ресурсов разных источников(CORP) Не позволяет другим доменам читать ответ ресурсов, к которым применяется этот заголовок.
-
Content-Security-Policy(CSP) Контролирует ресурсы, которые пользовательскому агенту разрешено загружать для данной страницы.
-
Content-Security-Policy-Report-Only Позволяет веб-разработчикам экспериментировать с политиками, отслеживая, но не применяя их действие.
Эти отчеты о нарушениях состоят из документов JSON, отправленных с помощью запроса HTTP POSTна указанный URI.-
Ожидайте-CT Позволяет сайтам включать отчетность и/или принудительное применение требований к прозрачности сертификатов, что предотвращает незамеченное использование ошибочно выпущенных сертификатов для этого сайта. Когда сайт включает заголовок Expect-CT, они запрашивают, чтобы Chrome проверял наличие любого сертификата для этого сайта в общедоступных журналах CT.
-
Функциональная политика Предоставляет механизм, разрешающий и запрещающий использование функций браузера в собственном фрейме и во встроенных фреймах.
-
Изоляция источникаЭкспериментальный Предоставляет механизм, позволяющий веб-приложениям изолировать свое происхождение.

-
Строгая транспортная безопасность(HSTS) Принудительно использовать HTTPS вместо HTTP.
-
Небезопасные запросы на обновление Отправляет серверу сигнал, выражающий предпочтение клиента для зашифрованного и аутентифицированного ответа, и что он может успешно обработать
директива update-insecure-requests.-
X-Content-Type-Options Отключает анализ MIME и заставляет браузер использовать тип, указанный в
Content-Type.-
X-Download-Options HTTP-заголовок
X-Download-Optionsуказывает, что браузер (Internet Explorer) не должен отображать параметр «Открыть» файл, который был загружен из приложения, чтобы предотвратить фишинговые атаки, поскольку в противном случае файл получит доступ к выполняться в контексте приложения.-
Опция X-Frame(XFO) Указывает, следует ли разрешить браузеру отображать страницу в
,,или.
-
X-разрешенные междоменные политики Указывает, разрешен ли файл междоменной политики (
crossdomain.xml). Файл может определять политику предоставления клиентам, таким как Adobe Flash Player (теперь устаревший), Adobe Acrobat, Microsoft Silverlight (теперь устаревший) или Apache Flex, разрешения на обработку данных между доменами, которые в противном случае были бы ограничены из-за того же самого. Политика происхождения. Дополнительную информацию см. в Спецификации файла междоменной политики.-
X-Powered-By Может быть установлен хостинговыми средами или другими фреймворками и содержит информацию о них, не предоставляя никакой пользы приложению или его посетителям. Снимите этот заголовок, чтобы избежать раскрытия потенциальных уязвимостей.
-
X-XSS-защита Включает фильтрацию межсайтовых сценариев.
Заголовки запросов на выборку метаданных предоставляют информацию о контексте, из которого был получен запрос.
Это позволяет серверу принимать решения о том, следует ли разрешить запрос, исходя из того, откуда пришел запрос и как будет использоваться ресурс.
-
Sec-Fetch-Site Это заголовок запроса, который указывает связь между источником инициатора запроса и источником его цели. Это структурированный заголовок, значением которого является токен с возможными значениями
межсайтовый,тот же источник,тот же сайтинет.-
Секундный режим выборки Это заголовок запроса, который указывает режим запроса на сервер. Это структурированный заголовок, значением которого является токен с возможными значениями 9.0005 cors ,
navigation,no-cors,того же происхожденияиwebsocket.-
Sec-Fetch-Пользователь Это заголовок запроса, который указывает, был ли запрос навигации инициирован активацией пользователя.
Это структурированный заголовок, значение которого является логическим, поэтому возможные значения: ± 0для false и± 1для true.-
Sec-Fetch-Dest Это заголовок запроса, который указывает назначение запроса на сервер. Это структурированный заголовок, значение которой является токен с возможными значениями
Audio,AudioWorklet,Документ,Embed,пустой,Font,изображение,Manifest,объект,paintworklet,отчет,скрипт,serviceworker,sharedworker,стиль,дорожка,видео,рабочийиxslt.-
Service-Worker-Navigation-Preload Заголовок запроса, отправленный в упреждающем запросе на
fetch()ресурса во время загрузки сервисного работника.
Значение, установленное с помощью NavigationPreloadManager.setHeaderValue(), может использоваться для информирования сервера о том, что должен быть возвращен ресурс, отличный от обычногоfetch()операция.
-
Идентификатор последнего события уточняется
-
НЕЛЭкспериментальный Определяет механизм, который позволяет разработчикам объявлять политику отчетов о сетевых ошибках.
-
Пинг-от уточняется
-
Пинг-до уточняется
-
Отчет-Кому Используется для указания конечной точки сервера, на которую браузер будет отправлять предупреждения и отчеты об ошибках.
-
Кодирование передачи Указывает форму кодирования, используемую для безопасной передачи ресурса пользователю.

-
ТЭ Указывает кодировки передачи, которые пользовательский агент готов принять.
-
Прицеп Позволяет отправителю включать дополнительные поля в конце сообщения, разбитого на фрагменты.
-
Sec-WebSocket-ключ уточняется
-
Сек-WebSocket-Расширения уточняется
-
Сек-Веб-сокет-акцепт уточняется
-
Sec-WebSocket-протокол уточняется
-
Sec-WebSocket-версия уточняется
-
Принять-Push-политикуЭкспериментальный Клиент может выразить желаемую политику push для запроса, отправив поле заголовка
Accept-Push-Policyв запросе.
-
Принятие подписиЭкспериментальный Клиент может отправить
Accept-Signature 9Поле заголовка 0006, указывающее на намерение воспользоваться преимуществами любых доступных подписей и указывающее, какие типы подписей оно поддерживает.-
Альт-Svc Используется для перечисления альтернативных способов доступа к этой службе.
-
Дата Содержит дату и время создания сообщения.
-
Ранние данныеЭкспериментальный Указывает, что запрос был передан в ранних данных TLS.
-
КрупногабаритныйУстаревший Сообщает браузеру, что загружаемой странице потребуется выполнить большое выделение памяти.

-
Ссылка Поле заголовка объекта
Linkпредоставляет средства для сериализации одной или нескольких ссылок в заголовках HTTP. Он семантически эквивалентен HTML 9.0005 <ссылка> элемент.-
Push-политикаЭкспериментальный Push-Policyопределяет поведение сервера в отношении push при обработке запроса.-
Повторить после Указывает, как долго пользовательский агент должен ждать, прежде чем сделать дополнительный запрос.
-
ПодписьЭкспериментальный Поле заголовка
Signatureсодержит список подписей для обмена, каждая из которых сопровождается информацией о том, как определить полномочия и обновить эту подпись.
Поле заголовка
Signed-Headersидентифицирует упорядоченный список полей заголовка ответа для включения в подпись.-
Время сервера Сообщает одну или несколько метрик и описаний для заданного цикла запрос-ответ.
-
Разрешенный работник службы Используется для снятия ограничения пути путем включения этого заголовка в ответ сценария Service Worker.
-
Исходная карта Связывает сгенерированный код с исходной картой.
-
Модернизация Соответствующим документом RFC для поля заголовка Upgrade является RFC 9110, раздел 7.8. Стандарт устанавливает правила обновления или перехода на другой протокол для текущего клиента, сервера или транспортного протокола. Например, этот стандарт заголовка позволяет клиенту перейти с HTTP 1.1 на WebSocket, если сервер решит подтвердить и внедрить поле заголовка Upgrade.
Ни одна из сторон не обязана принимать условия, указанные в поле заголовка Upgrade. Его можно использовать как в клиентских, так и в серверных заголовках. Если указано поле заголовка Upgrade, то отправитель ДОЛЖЕН также отправить поле заголовка Connection с указанной опцией обновления. Подробнее о поле заголовка Connection см. в разделе 7.6.1 вышеупомянутого RFC.-
X-DNS-управление предварительной выборкой Управляет предварительной выборкой DNS, функцией, с помощью которой браузеры заранее выполняют разрешение доменных имен для обеих ссылок, по которым пользователь может перейти, а также для URL-адресов элементов, на которые ссылается документ, включая изображения, CSS, JavaScript и т. д.
-
X-Firefox-SpdyУстаревший Нестандартный уточняется
-
X-PingbackCheck cross-browser support before using.»> Нестандартный уточняется
-
X-запрос-с уточняется
-
X-Robots-TagНестандартный HTTP-заголовок
X-Robots-Tagиспользуется для указания того, как веб-страница должна быть проиндексирована в общедоступных результатах поисковой системы. Заголовок фактически эквивалентен.-
Совместимость с X-UAНестандартный Используется Internet Explorer, чтобы указать, какой режим документа использовать.
Вы можете помочь, написав новые записи или улучшив существующие.
- Страница Википедии в списке заголовков HTTP
- Реестр IANA
- Рабочая группа HTTP
Последнее изменение: , участниками MDN
Включение или отключение заголовков таблицы Excel
Excel для Microsoft 365 Excel для Microsoft 365 для Mac Excel для Интернета Excel 2021 Excel 2021 для Mac Excel 2019 Excel 2019 для Mac Excel 2016 Excel 2016 для Mac Excel 2013 Excel 2010 Excel 2007 Excel для Mac 2011 Дополнительно…Меньше
При создании таблицы Excel таблица Строка заголовка автоматически добавляется в качестве первой строки таблицы, но вы должны включить или отключить ее.
При первом создании таблицы у вас есть возможность использовать собственную первую строку данных в качестве строки заголовка, отметив параметр Моя таблица имеет заголовки :
Если вы решите не использовать собственные заголовки, Excel добавит имена заголовков по умолчанию, например Column1 , Column2 и т. д., но вы можете изменить их в любое время.
Имейте в виду, что если у вас есть строка заголовка в ваших данных, но вы решили не использовать ее, Excel будет рассматривать эту строку как данные. В следующем примере вам нужно будет удалить строку 2 и переименовать заголовки по умолчанию, иначе Excel ошибочно увидит ее как часть ваших данных.
Примечания:
Снимки экрана в этой статье были сделаны в Excel 2016. Если у вас другая версия, представление может немного отличаться, но, если не указано иное, функциональность такая же.
Строку заголовка таблицы не следует путать с заголовками столбцов рабочего листа или заголовками печатных страниц. Дополнительные сведения см. в разделе Печать строк с заголовками столбцов вверху каждой страницы.

Когда вы отключаете строку заголовка, автоматический фильтр отключается, а все примененные фильтры удаляются из таблицы.
При добавлении нового столбца, когда заголовки таблиц не отображаются, имя нового заголовка таблицы не может быть определено путем заполнения ряда, основанного на значении заголовка таблицы, непосредственно примыкающего слева от нового столбца. Это работает только при отображении заголовков таблиц. Вместо этого добавляется заголовок таблицы по умолчанию, который можно изменить при отображении заголовков таблицы.
Хотя можно ссылаться на заголовки таблиц, которые отключены в формулах, вы не можете ссылаться на них, выбирая их.
Ссылки в таблицах на скрытый заголовок таблицы возвращают нулевые (0) значения, но остаются неизменными и возвращают значения заголовка таблицы при повторном отображении заголовка таблицы. Все другие ссылки на рабочий лист (например, ссылки в стиле A1 или RC) на заголовок таблицы корректируются, когда заголовок таблицы отключен, и могут привести к тому, что формулы будут возвращать неожиданные результаты.
Показать или скрыть строку заголовка
Щелкните в любом месте таблицы.
Перейдите к Table Tools > Design на ленте.
- org/ListItem»>
В группе Параметры стиля таблицы установите флажок Строка заголовка , чтобы скрыть или отобразить заголовки таблицы.
Если вы переименуете строки заголовков, а затем отключите строку заголовков, исходные введенные вами значения будут сохранены, если вы снова включите строку заголовков.
Примечания:
Снимки экрана в этой статье были сделаны в Excel 2016. Если у вас другая версия, представление может немного отличаться, но, если не указано иное, функциональность такая же.
- org/ListItem»>
Строку заголовка таблицы не следует путать с заголовками столбцов рабочего листа или заголовками печатных страниц. Дополнительные сведения см. в разделе Печать строк с заголовками столбцов вверху каждой страницы.
Когда вы отключаете строку заголовка, автоматический фильтр отключается, а все примененные фильтры удаляются из таблицы.
При добавлении нового столбца, когда заголовки таблиц не отображаются, имя нового заголовка таблицы не может быть определено путем заполнения ряда, основанного на значении заголовка таблицы, непосредственно примыкающего слева от нового столбца. Это работает только при отображении заголовков таблиц.
Вместо этого добавляется заголовок таблицы по умолчанию, который можно изменить при отображении заголовков таблицы.Хотя можно ссылаться на заголовки таблиц, которые отключены в формулах, вы не можете ссылаться на них, выбирая их. Ссылки в таблицах на скрытый заголовок таблицы возвращают нулевые (0) значения, но остаются неизменными и возвращают значения заголовка таблицы при повторном отображении заголовка таблицы. Все другие ссылки на рабочий лист (например, ссылки в стиле A1 или RC) на заголовок таблицы корректируются, когда заголовок таблицы отключен, и могут привести к тому, что формулы будут возвращать неожиданные результаты.
Показать или скрыть строку заголовка
- org/ListItem»>
Щелкните в любом месте таблицы.
Перейдите на вкладку Table на ленте.
В Параметры стиля таблицы установите флажок Строка заголовка , чтобы скрыть или отобразить заголовки таблицы.
Если вы переименуете строки заголовков, а затем отключите строку заголовков, исходные введенные вами значения будут сохранены, если вы снова включите строку заголовков.
Показать или скрыть строку заголовка
- org/ItemList»>
Щелкните в любом месте таблицы.
На вкладке Главная на ленте щелкните стрелку вниз рядом с Таблица и выберите Переключить строку заголовка .
—ИЛИ—
Щелкните вкладку Дизайн таблицы > Параметры стиля > Строка заголовка .
Нужна дополнительная помощь?
Вы всегда можете обратиться к эксперту в техническом сообществе Excel или получить поддержку в сообществе ответов.
См. также
Обзор таблиц Excel
Видео: Создание таблицы Excel
Создать или удалить таблицу Excel
Отформатировать таблицу Excel
Изменение размера таблицы путем добавления или удаления строк и столбцов
Фильтрация данных в диапазоне или таблице
Использование структурированных ссылок с таблицами Excel
Преобразование таблицы в диапазон
Понимание The Vary Header — Smashing Magazine
- 14 минут чтения
- Заголовки, Кэширование
- Поделиться в Twitter, LinkedIn
Об авторе
Эндрю является главным сторонником разработки в Fastly, избранным членом группы технической архитектуры W3C и сопредседателем London Web Performance.
Больше о
Андрей ↬
HTTP-заголовок Vary отправляется в миллиардах HTTP-ответов каждый день. Но его использование никогда не соответствовало его первоначальному замыслу, и многие разработчики неправильно понимают, что он делает, или даже не осознают, что их веб-сервер отправляет его. С появлением подсказок для клиентов, вариантов и ключевых спецификаций различные ответы получают новый старт.
Что изменилось?
История Вэри начинается с прекрасной идеи о том, как должна работать сеть. В принципе, URL-адрес представляет собой не веб-страницу, а концептуальный ресурс, например выписку по счету. Представьте, что вы хотите увидеть выписку по своему банковскому счету: вы идете по адресу bank. и отправляете запрос
com GET на /statement . Пока все хорошо, но вы не сказали, в каком формате вы хотите получить выражение. Вот почему ваш браузер также будет включать что-то вроде Accept: text/html в вашем запросе. Теоретически, по крайней мере, это означает, что вместо этого вы можете сказать Accept: text/csv и получить тот же ресурс в другом формате.
Поскольку один и тот же URL-адрес теперь дает разные ответы в зависимости от значения заголовка Accept , любой кэш, в котором хранится этот ответ, должен знать, что этот заголовок важен. Сервер сообщает нам, что заголовок Accept важен следующим образом:
Vary: Accept
Это можно прочитать так:0005 Принять заголовок вашего запроса».
Этот в основном не работает в сегодняшней сети. Так называемые «согласования контента» были отличной идеей, но провалились.
Однако это не означает, что Vary бесполезен. Приличная часть страниц, которые вы посещаете в Интернете, содержат заголовок Vary в ответе — возможно, они есть и на ваших веб-сайтах, но вы об этом не знаете. Итак, если заголовок не работает для согласования контента, почему он до сих пор так популярен и как с ним справляются браузеры? Давайте взглянем.
Ранее я писал о Vary в связи с сетями доставки контента (CDN), теми промежуточными кэшами (такими как Fastly, CloudFront и Akamai), которые вы можете разместить между своими серверами и пользователем. Браузеры также должны понимать и реагировать на правила Vary, и то, как они это делают, отличается от того, как Vary обрабатывается CDN. В этом посте я исследую темный мир вариаций кеша в браузере.
Больше после прыжка! Продолжить чтение ниже ↓
Современные варианты использования для изменения в браузере
Как мы видели ранее, традиционное использование Vary заключается в выполнении согласования контента с использованием заголовков Accept , Accept-Language и Accept-Encoding , и, исторически, первые два из них с треском провалились.
Изменение Accept-Encoding для доставки ответов, сжатых Gzip или Brotli, где это поддерживается, в основном работает достаточно хорошо, но в наши дни все браузеры поддерживают Gzip, так что это не очень интересно.
Как насчет некоторых из этих сценариев?
- Мы хотим показывать изображения, которые точно соответствуют ширине экрана пользователя. Если пользователь изменит размер своего браузера, мы загрузим новые изображения (в зависимости от подсказок клиента).
- Если пользователь выходит из системы, мы хотим избежать использования каких-либо страниц, которые были кэшированы во время входа в систему (с использованием файла cookie в качестве
ключа). - Пользователи браузеров, поддерживающих формат изображения WebP, должны получать изображения WebP; в противном случае они должны получить JPEG.
- При использовании браузера на экране с высокой плотностью изображения пользователь должен получить двукратное увеличение изображения.
Если они переместят окно браузера на экран стандартной плотности и обновятся, они должны получить 1x изображения.
Кэширует полностью вниз
В отличие от пограничных кешей, которые действуют как один гигантский кеш, совместно используемый всеми пользователями, браузер предназначен только для одного пользователя, но у него есть много разных кешей для разных, конкретных целей:
(Просмотр большая версия)Некоторые из них являются совершенно новыми, и точное определение того, из какого кэша загружается контент, является сложным вычислением, которое плохо поддерживается инструментами разработчика. Вот что делают эти кэши:
- кэш изображений
Это кэш на уровне страницы, в котором хранятся данные декодированного изображения, так что, например, если вы включаете одно и то же изображение на страницу несколько раз, браузеру нужно загрузить и декодировать его только один раз. - Кэш предварительной загрузки
Это также относится к странице и хранит все, что было предварительно загружено в заголовкеLinkили теге, даже если ресурс обычно не кэшируется.
Как и кеш изображений, кеш предварительной загрузки уничтожается, когда пользователь уходит со страницы. - API кэша сервис-воркеров
Предоставляет серверную часть кэша с программируемым интерфейсом; поэтому здесь ничего не хранится, если вы специально не поместите это туда с помощью кода JavaScript в сервис-воркере. Это также будет проверено только в том случае, если вы явно сделаете это в обработчике сервисного работникаfetch. Кэш сервис-воркера ограничен исходной областью, и хотя его постоянство не гарантируется, он более постоянен, чем HTTP-кеш браузера. - Кэш HTTP
: Это основной тайник, с которым люди больше всего знакомы. Это единственный кеш, который обращает внимание на заголовки кеша уровня HTTP, такие какCache-Control, и объединяет их с собственными эвристическими правилами браузера, чтобы определить, нужно ли что-то кэшировать и как долго. Он имеет самый широкий охват и используется всеми веб-сайтами; поэтому, если два несвязанных веб-сайта загружают один и тот же ресурс (например, Google Analytics), они могут иметь одно и то же попадание в кеш.
- HTTP/2 push-кэш (или «кэш h3 push»)
. Он находится вместе с соединением и хранит объекты, которые были отправлены с сервера, но еще не были запрошены какой-либо страницей, использующей соединение. Он привязан к страницам, использующим конкретное соединение, что по сути то же самое, что и область одного источника, но также уничтожается при закрытии соединения.
Из них лучше всего определены кэш HTTP и кэш сервис-воркеров. Что касается кешей изображений и предварительной загрузки, некоторые браузеры могут реализовать их как единый «кеш памяти», привязанный к рендерингу конкретной навигации, но ментальная модель, которую я здесь описываю, по-прежнему является правильным способом осмысления процесса. См. примечание к спецификации на preload , если вам интересно. В случае пуш-сервера h3 обсуждение судьбы этого кеша остается активным.
Порядок, в котором запрос проверяет эти кэши перед тем, как выйти в сеть, важен, потому что запрос чего-либо может перетащить его из внешнего уровня кэширования во внутренний.
Например, если ваш сервер HTTP/2 отправляет таблицу стилей вместе со страницей, которая в ней нуждается, и эта страница также предварительно загружает таблицу стилей с , то таблица стилей будет касаться трех кешей в браузере. Во-первых, он будет находиться в push-кэше h3, ожидая запроса. Когда браузер отображает страницу и достигает тега preload , он извлекает таблицу стилей из push-кэша через HTTP-кэш (который может хранить ее, в зависимости от заголовка таблицы стилей Cache-Control ). , и сохранит его в кеше предварительной загрузки.
Представляем Vary As A Validator
Итак, что произойдет, если мы возьмем эту ситуацию и добавим к ней Вэри?
В отличие от промежуточных кешей (таких как CDN), браузеры обычно не реализуют возможность хранения нескольких вариантов URL-адреса . Причина этого в том, что вещи, для которых мы обычно используем Vary (в основном Accept-Encoding и Accept-Language ), не меняются часто в контексте одного пользователя.
Accept-Encoding может измениться (но, скорее всего, не изменится) при обновлении браузера, и Accept-Language , скорее всего, изменится только в том случае, если вы отредактируете языковые настройки операционной системы. Также оказалось, что таким образом намного проще реализовать Vary, хотя некоторые авторы спецификаций считают, что это было ошибкой.
Для браузера в большинстве случаев не будет большой потерей хранить только один вариант, но важно, чтобы мы случайно не использовали вариант, который больше не действителен, если «вариантные» данные действительно изменятся.
Компромисс для лечения Вари в качестве валидатора, а не ключа. Браузеры вычисляют ключи кеша обычным способом (по сути, используя URL-адрес), а затем, если они засчитывают попадание, они проверяют, удовлетворяет ли запрос всем правилам Vary, запеченным в кэшированном ответе. Если нет, то браузер рассматривает запрос как промах в кеше и переходит к следующему уровню кеша или выходит в сеть.
Когда получен новый ответ, он перезапишет кешированную версию, даже если технически это другой вариант.
Демонстрация поведения Vary
Чтобы продемонстрировать, как обрабатывается Vary , я сделал небольшой набор тестов. Тест загружает ряд разных URL-адресов, различающихся по разным заголовкам, и определяет, попал ли запрос в кеш или нет. Первоначально я использовал для этого ResourceTiming, но для большей совместимости я в конечном итоге переключился на измерение того, сколько времени занимает выполнение запроса (и намеренно добавил 1-секундную задержку к ответам на стороне сервера, чтобы разница была действительно очевидной).
Давайте посмотрим на каждый из типов кеша и на то, как должен работать Vary и действительно ли он так работает. Для каждого теста я показываю здесь, следует ли ожидать результата от кеша («ПОПАДАНИЕ» или «ПРОМАХ») и что на самом деле произошло.
Предварительная загрузка
Предварительная загрузка в настоящее время поддерживается только в Chrome, где предварительно загруженные ответы хранятся в кеше памяти до тех пор, пока они не понадобятся странице.
Ответы также заполняют кеш HTTP на пути к кешу предварительной загрузки, если они поддерживают HTTP-кэширование. Поскольку указание заголовков запросов с предварительной загрузкой невозможно, а кэш предварительной загрузки длится только до тех пор, пока страница, проверить это сложно, но мы, по крайней мере, можем видеть, что объекты с Заголовок Vary успешно предварительно загружается:
Service Worker Cache API
Chrome и Firefox поддерживают сервисные работники, и при разработке спецификации сервисного работника авторы хотели исправить то, что они считали неработающими реализациями в браузерах. , чтобы Vary в браузере работали как CDN. Это означает, что, хотя браузер должен хранить только одну вариацию в кеше HTTP, он должен хранить несколько вариаций в Cache API. Firefox (54) делает это правильно, в то время как Chrome использует ту же логику «вариант-валидатор», что и для кэша HTTP (ошибка отслеживается).
HTTP-кэш
Основной HTTP-кэш должен учитывать Vary и делает это последовательно (в качестве валидатора) во всех браузерах.
Подробнее об этом читайте в статье Марка Ноттингема «Пересмотр состояния кэширования браузера».
HTTP/2 Push Cache
Vary следует соблюдать, но на практике ни один браузер не соблюдает его, и браузеры с радостью будут сопоставлять и потреблять отправленные ответы с запросами, которые содержат случайные значения в заголовках, от которых зависят ответы.
Морщина «304 (не изменено)»
Статус ответа HTTP «304 (не изменено)» завораживает. Наш «уважаемый лидер», Артур Бергман, указал мне на эту жемчужину в спецификации кэширования HTTP (выделено мной):
Сервер, генерирующий ответ 304 , должен генерировать любое из следующих полей заголовка, которые были бы отправлены в ответ 200 (ОК) на тот же запрос:
Cache-Control,Content-Location,Дата,ETag,Срок действия, иВарьируется.
Почему ответ 304 возвращает заголовок Vary ? График становится толще, когда вы читаете о том, что вы должны делать при получении ответа 304 , который содержит следующие заголовки:
Если для обновления выбран сохраненный ответ, кэш должен \[…] использовать другой заголовок поля, представленные в ответе 304 (не изменено), чтобы заменить все экземпляры соответствующих полей заголовка в сохраненном ответе.
Подождите, что? Итак, если заголовок 304 Vary отличается от заголовка в существующем кэшированном объекте, мы должны обновить кэшированный объект? Но это может означать, что он больше не соответствует сделанному нами запросу!
В этом сценарии, на первый взгляд, 304 кажется, что вы одновременно можете и не можете использовать кэшированную версию. Конечно, если бы сервер действительно не хотел, чтобы вы использовали кешированную версию, он бы отправил 200 , а не 304 ; таким образом, кешированную версию определенно следует использовать, но после применения к ней обновлений она может не использоваться снова для будущего запроса, идентичного тому, который фактически заполнил кеш в первую очередь.
(Примечание: в Fastly мы не уважаем эту особенность спецификации. Поэтому, если мы получим 304 с вашего исходного сервера, мы продолжим использовать кэшированный объект без изменений, за исключением сброса TTL.
)
Браузеры, кажется, уважают это, но с причудой. Они обновляют не только заголовки ответов, но и заголовки запросов, которые с ними связаны, чтобы гарантировать, что после обновления кэшированный ответ соответствует текущему запросу. Кажется, это имеет смысл. В спецификации это не упоминается, поэтому производители браузеров могут делать все, что им заблагорассудится; к счастью, все браузеры ведут себя одинаково.
Клиентские подсказки
Функция клиентских подсказок Google — одна из самых важных новых вещей, произошедших с Vari в браузере за долгое время. В отличие от Accept-Encoding и Accept-Language , подсказки клиента описывают значения, которые могут регулярно меняться по мере того, как пользователь перемещается по вашему веб-сайту, в частности, следующие: экран (может отличаться, если у пользователя несколько экранов)
Save-Data Включил ли пользователь режим сохранения данных
Viewport-Width Ширина текущего окна просмотра в пикселях значения меняются для одного пользователя, но диапазон значений, связанных с шириной, велик.
Таким образом, мы можем полностью использовать Vary с этими заголовками, но мы рискуем снизить эффективность нашего кэша или даже сделать кэширование неэффективным.Client Hints и другие заголовки с высокой степенью детализации поддаются предложению, над которым работает Марк, под названием Key. Давайте рассмотрим пару примеров:
Ключ: Viewport-Width;div=50
Это говорит о том, что ответ варьируется в зависимости от значения заголовка запроса Viewport-Width , но округляется до ближайшего числа, кратного 50. пикселей!
Ключ: cookie;param=sessionAuth;param=flags
Добавление этого заголовка в ответ означает, что мы изменяем два конкретных файла cookie: sessionAuth и флаги . Если они не изменились, мы можем повторно использовать этот ответ для будущего запроса.
Таким образом, основные различия между Key и Vary заключаются в следующем:
-
Keyпозволяет изменять подполя в заголовках, что внезапно делает возможным изменение файлов cookie, поскольку вы можете изменять только один файл cookie.
— это было бы огромно; - отдельные значения могут быть разделены на диапазоны , чтобы увеличить вероятность попадания в кеш, что особенно полезно для изменения таких вещей, как ширина области просмотра.
- все варианты с одним и тем же URL должны иметь один и тот же ключ. Таким образом, если кеш получает новый ответ для URL-адреса, для которого у него уже есть некоторые существующие варианты, и значение заголовка
Keyнового ответа не соответствует значениям этих существующих вариантов, тогда все варианты должны быть исключены из списка. кеш.
На момент написания ни один браузер или CDN не поддерживали ключ , хотя в некоторых CDN вы можете получить тот же эффект, разделив входящие заголовки на несколько частных заголовков и изменяя их (см. Больше всего отличается от Fastly»), поэтому браузеры являются основной областью, где Ключ может оказать влияние.
Требование, чтобы все вариации имели один и тот же рецепт ключа, несколько ограничивает, и я хотел бы видеть в спецификации какую-то опцию «раннего выхода».
Это позволит вам делать такие вещи, как «Изменяться в зависимости от состояния аутентификации, а если вы вошли в систему, также изменяться в зависимости от предпочтений».
The Variants Proposal
Ключ — хороший общий механизм, но некоторые заголовки имеют более сложные правила для своих значений, и понимание семантики этих значений может помочь нам найти автоматизированные способы уменьшения вариаций кэша. Например, представьте, что два запроса приходят с разными Accept-Language значений, en-gb и en-us , но хотя ваш веб-сайт поддерживает языковые варианты, у вас есть только один «английский». Если мы ответим на запрос на английском языке США, и этот ответ кэшируется в CDN, то его нельзя будет повторно использовать для запроса английского языка в Великобритании, потому что значение Accept-Language будет другим, а кэш недостаточно умен, чтобы знаю лучше.
Введите, с большой помпой, предложение вариантов.
Это позволило бы серверам описывать, какие варианты они поддерживают, позволяя кэшам принимать более разумные решения о том, какие варианты на самом деле отличаются, а какие фактически одинаковы.
На данный момент вариант Variants находится на ранней стадии разработки, и, поскольку он предназначен для помощи с Accept-Encoding и Accept-Language , его полезность скорее ограничена общими кэшами, такими как CDN, а не кэшами браузера. Но он прекрасно сочетается с ключом и ключом и дополняет картину для лучшего контроля за изменением кеша.
Заключение
Здесь можно многое понять, и хотя может быть интересно понять, как работает браузер внутри, есть также несколько простых вещей, которые вы можете извлечь из него:
- Большинство браузеров рассматривают
Varyкак валидатор. Если вы хотите кэшировать несколько отдельных вариантов, найдите способ вместо этого использовать разные URL-адреса. - Браузеры игнорируют
Изменитьдля ресурсов, отправляемых с помощью HTTP/2-сервера, поэтому не меняйте ничего, что вы отправляете.

Сначала пользователь смотрит на левый верхний угол сайта, затем переводит взгляд вправо до конца строки. Далее по диагонали спускается в левый нижний угол и снова переводит взгляд вправо.
criteo.com
my.com
ru
ai
ru
ru
ru
ru
ru