S2Блог20110518

Быстродействие S2

18 мая 2011 года, 22:41

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

Во-первых, в движке нет ненужного хлама. В его ядре реализованы самые необходимые вещи. Редко используемые функции [могут быть] выполнены как расширения.

Во-вторых, то, что в нем есть, сделано хорошо. Например, запросы к базе данных грамотно составлены и оптимизированы. Еще пример: если в шаблоне страницы нет какой-то части, вычислительные ресурсы на построение этой части не тратятся.

Перейдем от теории к практике. Сравним быстродействие S2 и WordPress. Важный параметр, влияющий на время сборки страниц, это количество запросов к базе данных. Обычно WordPress делает несколько десятков запросов, время сборки страницы составляет десятые доли секунды. Например, вот ресурсы для вывода главной страницы wordpress.org/news:

<!-- 19 queries. 0.277 seconds. -->

А вот для внутренней страницы:

<!-- 16 queries. 0.214 seconds. -->

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

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

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

В S2 тоже есть кеш (который, кстати, штатными средствами не отключается). Кеш S2 не хранит содержимое всех страниц. Он экономит всего лишь два запроса к базе данных, которые без него выполнялись бы на каждой странице. Первый запрос считывает параметры настройки (которые можно редактировать на соответствующей странице панели управления), а второй — код расширений из файлов manifest.xml. Отключение кеша не привело бы ни к каким катастрофическим последствиям.

Теперь вы знаете, почему S2 — простой и быстрый движок сайтов.