Готовые статические страницы

Еще один прием, часто применяемый сайтами с интенсивным и непредсказуемым трафиком, — преобразование динамической страницы в статическую HTML-страницу Эта задача может оказаться как невероятно сложной, так и очень простой в зависимости от конкретной страницы, однако вы можете разгрузить свой сайт, заранее построив статические страницы для самых популярных и наименее динамических страниц.

Допустим, на странице с новостями приводятся свежие фотографии, которые обновляются каждые два-три часа. В обычной ситуации самым очевидным решением будет создание динамической страницы, которая читает фотографии из базы данных или другой системы управления контентом. В критической ситуации можно жестко закодировать URL-адреса изображений в странице и изменять их вручную по мере надобности.

Конечно, преобразование страницы в статический код HTML нарушает работу многих функций, свойственных современным динамическим веб-сайтам, но у статических страниц есть свои преимущества:

  • Статические страницы не требуют обращений к базе данных.
  • Статические страницы очень быстро выдаются по запросу. Статический контент отображается до 10 раз быстрее, чем динамические страницы, которым приходится дожидаться других back-end-функций.
  • Статические страницы легко кэшируются. Если вам потребуется еще большая скорость, для статических страниц легко организовать кэширование по схеме «обратного посредника». Конечно, это создает в системе новый уровень абстракции, но если кэширование уже используется для других частей вашего сайта, реализовать его несложно.

Также следует учитывать и недостатки выдачи статических HTML-страниц под критической нагрузкой:

  • Вам понадобится инфраструктура, которая будет просто и быстро генерировать эти страницы (как начальную версию, так и обновленные). В идеале на веб-странице должна размещаться команда или кнопка, которая заменяет исходную динамическую страницу статическим HTML-аналогом или отменяет замену. На разработку такой инфраструктуры потребуется время и ресурсы.
  • Вам придется следить за тем, что где хранится, чтобы изменения контента отражались в страницах. Генерирование статического контента должно быть синхронизировано с источником контента (как правило, базой данных). Изменения, внесенные в базу данных, должны быть отражены во всех статических страницах, в которые включается данный контент.