Прогрессивное улучшение — это стратегия в веб-дизайне , которая делает акцент на веб-контенте в первую очередь, позволяя всем получить доступ к базовому контенту и функциональности веб-страницы, в то время как пользователи с дополнительными функциями браузера или более быстрым доступом в Интернет получают вместо этого расширенную версию. Эта стратегия ускоряет загрузку и облегчает сканирование поисковыми системами , поскольку текст на странице загружается немедленно через исходный код HTML , а не ждет, пока JavaScript инициирует и загрузит контент впоследствии, что означает, что контент, готовый к потреблению «из коробки», подается немедленно, а не за дополнительными слоями. [1] [2] [3]
Эта стратегия подразумевает отделение семантики представления от контента, при этом представление реализуется в одном или нескольких дополнительных слоях, активируемых на основе аспектов браузера или интернет-соединения клиента . На практике это означает обслуживание контента через HTML , «наименьший общий знаменатель» веб-стандартов, и применение стилей и анимации через CSS в технически возможной степени, а затем применение дальнейших улучшений через JavaScript . [4] Устаревший Adobe Flash можно рассматривать как разделивший последнее место с JavaScript, когда он широко использовался. [5] [6] Поскольку веб-браузеры могут загружать функции сайта в поддерживаемом объеме, а не не загружая весь сайт из-за одной ошибки или отсутствующей функции в JavaScript, постепенно улучшающийся сайт более стабилен и обратно совместим . [4]
«Прогрессивное улучшение» было придумано Стивеном Чампеоном и Ником Финком на конференции SXSW Interactive 11 марта 2003 года в Остине [7] и в серии статей для Webmonkey , опубликованных в период с марта по июнь 2003 года [8].
Конкретные методы каскадных таблиц стилей (CSS), относящиеся к гибкости макета страницы, подстраивающегося под различные разрешения экрана, являются концепцией, связанной с подходом адаптивного веб-дизайна . В 2012 году журнал net Magazine выбрал прогрессивное улучшение как № 1 в своем списке главных тенденций веб-дизайна 2012 года ( адаптивный дизайн был № 2). [9] Google поощряет принятие прогрессивного улучшения, чтобы помочь «нашим системам (и более широкому спектру браузеров) видеть полезный контент и базовую функциональность, когда определенные функции веб-дизайна еще не поддерживаются». [10]
Стратегия представляет собой эволюцию предыдущей стратегии веб-дизайна, известной как «грациозная деградация» , в рамках которой веб-страницы сначала разрабатывались для новейших браузеров, а затем делались пригодными для работы в старых версиях программного обеспечения браузеров. [11] [3] Цель «грациозной деградации» — позволить странице «деградировать» — оставаться презентабельной и доступной, даже если отсутствуют определенные технологии, ожидаемые дизайном. [12]
В прогрессивном улучшении стратегия намеренно меняется на противоположную: веб-контент создается с помощью документа разметки , ориентированного на наименьший общий знаменатель функциональности программного обеспечения браузера. [13] [8] [12] Если контент должен быть отображен интерактивно через JavaScript, например, сворачиваемое навигационное меню, это будет по умолчанию и только сначала скрыто самим JavaScript. [3] Разработчик добавляет все необходимые функции к представлению и поведению страницы, используя современный CSS, масштабируемую векторную графику (SVG) или JavaScript . [14]
Подход прогрессивного улучшения основан на раннем опыте Champeon ( около 1993–1994 гг .) со стандартным обобщенным языком разметки (SGML), предшествующим HTML и другим языкам веб-презентаций. [8]
Написание контента с семантической разметкой и рассмотрение представления контента отдельно, а не встраивание его в саму разметку, является концепцией, называемой правилом разделения представления и контента [15] [16] . Чэмпеон выразил надежду, что, поскольку веб-браузеры предоставляют стиль представления по умолчанию для контента HTML, это приведет к тому, что веб-сайты с их контентом будут написаны как семантический HTML, оставляя выбор представления веб-браузеру. [8] Однако потребности веб-дизайнеров привели к расширению стандарта HTML жестко закодированными функциями, которые позволяли контенту HTML предписывать определенные стили, и отнимали эту возможность у потребителей и их веб-браузеров. [8] Эти функции вынуждали издателей выбирать между принятием новых разрушительных технологий или разрешением контенту оставаться доступным для аудитории, использующей другие браузеры, дилемма между дизайном и совместимостью. [8] [17] [12] В 1990-х годах все большее количество веб-сайтов не работали ни в чем, кроме последних популярных браузеров. [12]
Эта тенденция изменилась после 1990-х годов, когда CSS получил широкую поддержку [8] [17] благодаря образовательным усилиям широких масс (Эрика Костелло, Оуэна Бриггса, Дэйва Ши и других), показывающим веб-дизайнерам, как использовать CSS для целей макетирования. [ необходима ссылка ]
Стратегия прогрессивного улучшения состоит из следующих основных принципов: [8]
Веб-страницы, созданные в соответствии с принципами прогрессивного улучшения, по своей природе более доступны, [27] обратно совместимы , [6] и охватывают больше , поскольку стратегия требует, чтобы базовый контент всегда был доступен, не был заблокирован обычно неподдерживаемыми или скриптами, которые могут быть легко отключены, неподдерживаемыми (например, текстовыми веб-браузерами ) или заблокированы на компьютерах в чувствительных средах. [14] Кроме того, принцип разреженной разметки упрощает поиск этого контента для инструментов, которые читают контент вслух. Неясно, насколько хорошо сайты прогрессивного улучшения работают со старыми инструментами, разработанными для работы с табличными макетами, « супом тегов » и т. п. [ необходима цитата ]
Клиент (вычислительная техника) может выбирать, какие части страницы загружать помимо базового HTML (например, стили, изображения и т. д.), и может выбрать загрузку только частей, необходимых для желаемого использования, чтобы ускорить загрузку и сократить пропускную способность и энергопотребление. Например, клиент может выбрать загрузку только базового HTML, без загрузки таблиц стилей, скриптов и медиа (например, изображений) из-за низкой скорости интернета, вызванной географическим положением, слабым сигналом сотовой связи или ограниченной скоростью из-за исчерпания высокоскоростного тарифного плана. Это также снижает потребление пропускной способности на стороне сервера.
Для сравнения, страницы, начальное содержимое которых загружается через AJAX, требуют от клиента неэффективного запуска JavaScript для загрузки и просмотра содержимого страницы, вместо того чтобы загрузить содержимое немедленно.
Улучшение результатов в отношении поисковой оптимизации (SEO) является еще одним побочным эффектом стратегии веб-дизайна на основе прогрессивного улучшения. Поскольку базовый контент всегда доступен для поисковых роботов, страницы, созданные с использованием методов прогрессивного улучшения, избегают проблем, которые могут помешать индексации поисковой системы, в то время как необходимость отображать базовый контент страницы посредством выполнения JavaScript сделает сканирование медленным и неэффективным. [27] [30]
Некоторые скептики, такие как Гаррет Даймон, выразили обеспокоенность тем, что прогрессивное улучшение не работает в ситуациях, где для достижения определенных представлений или поведения пользовательского интерфейса в значительной степени используется JavaScript. [31] Лори Грей (информационный архитектор в KnowledgeStorm [32] ) возразила, заявив, что информационные страницы должны кодироваться с использованием прогрессивного улучшения, чтобы их индексировали поисковые роботы. [33] Джефф Стернс (автор SWFObject , популярного приложения Flash) утверждал, что страницы с большим количеством Flash должны кодироваться с использованием прогрессивного улучшения. [34]
Дизайнеры Дуглас Боуман и Боб Стайн выразили сомнения относительно принципа разделения содержания и представления в абсолютных терминах, вместо этого настаивая на реалистичном признании того, что эти два понятия неразрывно связаны. [35] [15]
Прогрессивное улучшение […] означает [чтобы] создать ваш веб-сайт, начиная с браузеров с наименьшим общим знаменателем в уме.
Тест Acid 3 находится в стадии разработки и будет обновлен, когда The Web Standards Project выпустит финальную версию теста.