Статика и динамика

Зачем:Одну страницу отдают готовым файлом, другую сервер собирает под каждого посетителя. После урока вы понимаете цену каждого подхода (скорость, стоимость, безопасность, возможности) и решаете, где вашему проекту хватит статики, а где нужен сервер.

20 минут

Озвучено синтезом речи (Qwen3-TTS), голос не принадлежит человеку.

Статическая страница собрана заранее и отдаётся всем одним файлом, а динамическая собирается сервером в момент запроса, под конкретного посетителя.

Готовое или собранное

Когда вы открываете страницу, она могла получить свой окончательный вид двумя способами.

Статическая страница собрана заранее. Это файл, лежащий на сервере, и сервер отдаёт его как есть, всем одинаково. Вы писали такие страницы весь курс: открытый в браузере index.html и есть статика.

Динамическая страница собирается в момент запроса. Сервер получает запрос, запускает программу, та смотрит, кто спрашивает и что именно (какой пользователь, что искали, какие товары в корзине), берёт данные из базы и составляет из них HTML. Два посетителя, открывшие один и тот же адрес, могут увидеть разное.

Различие не в том, красива страница или нет и есть ли на ней анимация (она делается в браузере). Различие в том, когда страница получает окончательный вид: заранее или по запросу.

Что даёт статика

  • Скорость. Отдать готовый файл быстрее, чем запустить код и спросить базу. Файл можно положить в кэш (о нём ниже) и раздавать через сеть серверов по всему миру (CDN, о нём в части про инфраструктуру), так что он будет рядом с каждым посетителем.
  • Цена. Раздача файлов почти бесплатна, часто входит в хостинг. Нагрузка растёт, а счёт почти нет.
  • Безопасность. На сервере нет кода, который можно взломать, нет базы, которую можно украсть, нет паролей. Атаковать почти нечего.
  • Простота. Нечего обновлять, мониторить и чинить в три часа ночи.

Что даёт динамика

  • Страницы, зависящие от человека: личный кабинет, корзина, «ваши заказы».
  • Свежие данные без перезаливки сайта: остаток на складе, курс, расписание.
  • Приём данных: заявки, комментарии, оплаты.
  • Поиск и фильтры по большому каталогу.
  • Вход и роли: кто что может.

Платить за это приходится: скоростью (код и база на каждый запрос), деньгами (сервер с запасом на пиковую нагрузку), безопасностью (больше мест для атаки: код, база, пароли) и вниманием (обновления, резервные копии, мониторинг).

Посмотрите на ту же нагрузку в двух вариантах. Число посетителей растёт, и разница видна:

Тот же поток посетителей, два способа
Статика: файл, часто из кэша

запрос → файл → ответ

≈ 40 мс · серверов: 0 (раздаёт хостинг или CDN) · ≈ 0 ₽ в месяц сверх хостинга

Динамика: код и база

запрос → код → база → HTML → ответ

на одном сервере ≈ 220 мс · чтобы держать нагрузку без очереди, нужно серверов: 1 (≈ 1 500 ₽ в месяц)

При небольшом потоке разница заметна, но терпима. Она растёт вместе с числом посетителей.

Цифры условные: они показывают форму кривой, а не замер. В жизни всё зависит от кода, базы и железа.

Кэш: как сделать быструю динамику

Динамическую страницу можно сильно ускорить, если не собирать её заново для каждого посетителя. Это делает кэш: память, где лежит готовый ответ на случай, если его спросят снова.

  • Страницу, которая одинакова для всех и меняется раз в несколько минут, собирают один раз и отдают готовой. Заголовок Cache-Control (вы встречали его в уроке про HTTP) разрешает хранить ответ и браузеру, и промежуточным серверам.
  • Запросы к базе, которые повторяются, кэшируют отдельно, в быстрой памяти.
  • Картинки, стили и скрипты отдают отдельно, как статику, через CDN.
  • В самой базе строят индексы: «оглавление», по которому нужную запись находят сразу, а не перебирают все.

Кэшировать страницу, зависящую от человека (корзину, личный кабинет), нельзя или нужно очень аккуратно: иначе один человек увидит чужое. Это одна из самых неприятных ошибок в вебе.

Статика, которой хватает на большее, чем кажется

За последние годы появился подход, который называют Jamstack: сайт собирается заранее в статические файлы (это часть про генераторы сайтов, она впереди), а то, что требует сервера, подключается готовыми сервисами и облачными функциями. Форма заявки, например, отправляется сервису-посреднику, который пересылает её вам на почту: своего сервера не нужно, а сайт остаётся статическим.

Вывод для выбора простой: начинайте со статики и добавляйте динамику только там, где без неё нельзя. Большинство сайтов-визиток, лендингов и блогов прекрасно живут без собственного сервера.

Проверьте себя: почему корзину нельзя кэшировать так же, как страницу «О компании»?

Страница «О компании» одинакова для всех, а корзина у каждого своя. Если отдать одному посетителю закэшированную корзину другого, он увидит чужие покупки.

Практика

Вы на сайте эпохи 2010 года: начался век движков (WordPress, Битрикс), когда сайты стали собираться из базы данных на каждый запрос. Решите, какие части вашего проекта действительно нуждаются в этом.

Заполните таблицу: для каждого раздела вашего брифа, для списка предложений, формы заявки и входа для посетителей напишите «статика» или «динамика» и причину. Заметьте, что форма заявки не может быть чисто статической: данные надо кому-то принять. Затем ответьте, нужна ли вашему проекту база данных, и что вы закэшируете. Честный ответ «пока не нужна» тоже хороший.

Что было не так раньше

В 2000-е движок и база данных считались стандартной нормой для любого сайта, даже для визитки из пяти страниц. Каждое открытие страницы запускало PHP, который шёл в базу за теми же самыми пятью абзацами, что вчера и позавчера. Сайты-визитки медленно открывались, падали при наплыве посетителей, а взламывали их через уязвимости движка и плагинов (о них часто узнавали уже по взлому).

Правильным осталась идея, что динамика нужна там, где ответ зависит от человека и от свежих данных. А то, что от них не зависит, лучше отдавать готовым файлом.

Практика

Готовлю вашу страницу…

Тест

Вопрос 1 из 6

Чем статическая страница отличается от динамической?

Один ответ

Карточки

Эти карточки попадут в повторение, когда вы завершите урок.

  • Что такое статическая страница?

    Ответ

    Готовый файл, который сервер просто отдаёт. Её вид определён заранее. Быстро, дёшево, просто кэшировать и безопасно: на сервере нет кода и базы.

  • Что такое динамическая страница?

    Ответ

    Страница, которую код на сервере собирает под каждый запрос: по данным из базы, по пользователю, по поиску. Нужна, когда ответ зависит от человека или от свежих данных.

  • Чем платят за динамику?

    Ответ

    Скоростью (код и база на каждый запрос), деньгами (сервер с запасом), безопасностью (больше мест для атаки) и сложностью (надо обновлять, мониторить, делать резервные копии).

  • Как ускорить динамическую страницу?

    Ответ

    Кэшировать: готовую страницу целиком, её куски или запросы к базе. Статические части (картинки, стили) отдавать отдельно и через CDN. В базе делать индексы.

  • Как поставить форму на статический сайт?

    Ответ

    Через сервис-посредник (форм-бэкенд) или облачную функцию: форма отправляет данные им, а они пересылают заявку на почту или в мессенджер. Своего сервера не нужно.

Источники

Дальше

Теперь вы знаете: статика и динамика.