Статические сайты в облачном хранилище

Большинство современных веб-сайтов являются динамическими. Их страницы формируются на стороне сервера, а затем отображаются в браузере пользователя. Многие такие сайты функционируют на основе простых и удобных CMS (систем управления контентом) в состав которых, как правило, входит WISYWYG-редактор, простой и интуитивно понятный. При всей очевидной простоте при работе с динамическими сайтами возникает целый ряд неудобств.

Функционирование динамического сайта обеспечивается «связкой» из веб-сервера, приложения для генерации страниц и базы данных. Взаимодействие всех этих компонентов нередко сопряжено с серьезными затратами системных ресурсов. Чтобы снизить нагрузку и уменьшить время генерации страниц, используется кэширование, но его можно использовать не всегда и не везде. Обычно кэшируется контент, имеющий большой объем — например, графика. Также кэширование необходимо для минимизации числа запросов к базе данных.

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

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

Для объединения контента с шаблонами можно использовать так называемые генераторы статических сайтов. Генераторов существует очень много (на одном только GitHub их опубликовано несколько десятков). Наиболее широко распространенными и популярными являются Hyde, написанный на Python, а также Jekyll и MiddleMan, написанные на Ruby.

Обзор всех существующих генераторов статических сайтов выходит далеко за рамки этой статьи; всех заинтересованных читателей отсылаем к подробной сравнительной таблице.

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

Мы предлагаем собственную площадку для статических сайтов, довольно простую и удобную в работе. Речь идет о нашем облачном хранилище. Ниже мы расскажем о преимуществах использования нашего хранилища для хостинга статических сайтов. Для читателей, желающих попробовать разместить в хранилище собственный сайт, мы приведем детальную пошаговую инструкцию.

Преимущества

В качестве площадки для статических сайтов наше хранилище обладает следующими преимуществами:

  • указание индексного файла;
  • указание страницы ошибки;
  • листинг директории (plain и JSON) c возможностью задания собственного CSS;
  • просмотр статистики по запросам;
  • управление заголовками для кэширования;
  • создание страниц, на которых пользователи могут загрузить на сайт свои файлы;
  • организация просмотра изображений в виде фотогалереи;
  • прикрепление доменов второго уровня;
  • низкая стоимость использования — от 1 рубля в месяц.

Размещение сайта: пошаговая инструкция

Шаг 1: создаем публичный контейнер

Создать сайт на основе облачного хранилища достаточно просто. Войдем в панель управления под своей учетной записью, выберем в главном меню пункт «Облачное хранилище» и создадим публичный контейнер:

Создать сайт на основе облачного хранилища достаточно просто

Шаг 2: настраиваем специальные страницы

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

Откроется окно настройки специальных страниц:
Создать сайт на основе облачного хранилища достаточно просто

В поле «Индексный файл» указываем путь к файлу «index.html», который будет загружаться при обращении пользователя напрямую к какой-либо директории. Путь к индексному файлу может быть абсолютным и относительным (без символа / в начале). Абсолютный путь указывает на строго определенное расположение файла, вне зависимости от текущей рабочей папки или других обстоятельств. Он всегда начинается с корневого контейнера. При указании относительного пути поиск осуществляется не с корневого каталога, а с конца. Сначала система будет искать файл «index.html» в ближайшей к концу пути папке; если в ней такого файла нет, то будет пользователю будет отдан соответствующий файл из корневого каталога. Создадим в текстовом редакторе файл и напишем в нем, например, следующий текст:

<html>
  <body>
    <h1>Hello, world!</h1>
  </body> 
</html>

Затем сохраним его под именем «index.html». Загрузим его в контейнер, а затем выберем в качестве индексного. Если мы введем в строку браузера адрес типа «http://xxxxx.selcdn.ru/site/», то мы увидим индексную страницу с текстом «Hello, world!», сохраненным нами в соответствующем файле. Для индексной страницы можно создать файл стилей CSS (путь к нему указывается в поле «Файл стилей листинга»).

В поле «Файл ошибки» прописываем путь к файлу, на который будет отдан пользователю в случае, если тот запросит несуществующую страницу (ошибка 404). Создадим в текстовом редакторе файл с текстом «Page not found» и сохраним его под именем «error.html». Затем укажем его в качестве файла ошибки. Если мы укажем путь в адресной строке браузера путь к заведомо несуществующей странице (например, «http://xxxxx. selcdn.ru/site/1»), то мы будем перенаправлены на указанную нами страницу ошибки, и на экране будет отображен текст «Page not found». Странице ошибки 404 также можно придать оригинальное оформление. Вот что видят, например, пользователи, пытающиеся попасть на несуществующую страницу на сайте облачного хранилища — http://storage.selectel.ru/404.html

В поле «Файл ошибки» можно также указывать ссылку на любой внешний ресурс (если, например, будет указана ссылка на сайт «http://example.com», то при ошибке 404 пользователь будет перенаправлен именно на него).

Шаг 3: прикрепляем домен

Теперь нужно прикрепить к контейнеру домен. В том же меню выбираем пункт «Привязать домен»:

Теперь нужно прикрепить к контейнеру домен.

К одному контейнеру можно прикрепить до пяти доменов. Все хранимые в контейнере файлы будут доступны по имени прикрепленного домена. Если, например, к контейнеру «my_images» привязать домен «images.example.com», то все файлы из этого контейнера будут доступны по адресу «http://images.example.com». Прежде чем прикреплять домен, нужно обязательно внести в DNS необходимые записи (подробнее см. в панели управления)

Прикрепление доменов второго уровня

Мы наконец-то сделали-то, о чем нас давно просили многие клиенты: к контейнерам теперь можно прикреплять домены второго уровня. Для этого в DNS нужно внести А-запись (для IPv6-адресов — АААА-запись), ссылающуюся на адреса, указанные в панели управления.

Шаг 4: загружаем файлы

Задав все основные настройки, поместим в контейнер файлы для будущего сайта. Вот и все — сайт готов к работе!

Управление HTTP-заголовками

В облачном хранилище предусмотрена возможность управления http-заголовками для кэширования. Выберем в меню контейнера пункт «HTTP-заголовки». Нам нужно обратить особое внимание на заголовки Expires и Cache-control. С помощью заголовка Expires можно установить срок, в течение которого браузер будет кэшировать данные. В поле Expires вводится дата предполагаемого истечения актуальности данных в формате » день недели, число месяц год часы: минуты: секунды GMT, например: «Tue, 31 Jan 2012 15:02:53 GMT». После указанной даты кэширование осуществляться не будет, и с сервера будут загружены обновленные данные.

Управление кэшированием веб-страниц осуществляется с помощью заголовка cache-control, который может принимать следующие значения:

  • no cache — полный запрет кэширования (используется в часто обновляемых страницах);
  • public — разрешение кэширования как локальным клиентом, так и прокси-сервером;
  • private — разрешение кэширования только локальным клиентом;
  • max-age — использовать кэшированный документ в течение заданного времени в секундах;
  • no-store — запрет на кэширование страницы, содержащей приватные данные.

Стоимость

Помимо простоты, несомненным преимуществом использования облачного хранилища для хостинга статических сайтов является низкая стоимость хранения информации. Проиллюстрируем это конкретным примером: сам сайт хранилища в общей сложности «весит» три мегабайта; он обходится нам вместе с трафиком всего в 3 (!) рубля в месяц.

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

Что еще почитать по теме

T-Rex 30 марта 2021

Что такое SMTP-протокол и как он устроен?

SMTP (Simple Mail Transfer Protocol) — протокол передачи почты. Он был представлен еще в 1982 году, но не теряет актуальности до сих пор. В статье разбираемся, какие задачи решает протокол и как он ра…
T-Rex 30 марта 2021
Владимир Туров 1 сентября 2020

Дело совершенно секретного iPod

Это был обычный серый день в конце 2005 года. Я сидел на рабочем месте и писал код для следующей версии iPod. Вдруг без стука ворвался директор ПО для iPod, начальник моего начальника, и закрыл дверь.
Владимир Туров 1 сентября 2020
T-Rex 21 августа 2020

TrendForce: цены на SSD упадут

Эксперты DRAMeXchange предсказывают значительное падение цен на оперативную память и твердотельные накопители в ближайшее время. Причина — сокращение спроса на чипы для NAND и DRAM.
T-Rex 21 августа 2020

Новое в блоге

Михаил Фомин 24 июня 2022

Docker Swarm VS Kubernetes — как бизнес выбирает оркестраторы

Рассказываем, для каких задач бизнесу больше подойдет Docker Swarm, а когда следует выбрать Kubernetes.
Михаил Фомин 24 июня 2022
Владимир Туров 5 октября 2022

DBaaS: что такое облачные базы данных

Рассказываем о сервисе управляемых баз данных в облаке и объясняем, как разделяется ответственность за работу кластеров БД между провайдером и клиентом.
Владимир Туров 5 октября 2022
Ульяна Малышева 30 сентября 2022

«Нулевой» локальный диск. Как мы запустили облако только с сетевыми дисками и приручили Ceph

Чем хороши сетевые диски и почему именно Ceph, рассказал директор по развитию ядра облачной платформы Иван Романько.
Ульяна Малышева 30 сентября 2022
Валентин Тимофеев 30 сентября 2022

Как проходит онбординг сотрудников ИТО? Что нужно, чтобы выйти на смену в дата-центр

Рассказываем, как обучаем новых сотрудников, какие задачи и испытания проходят инженеры прежде, чем выйти на свою первую смену.
Валентин Тимофеев 30 сентября 2022