Оптимизация публикации
Прежде чем изучать эту статью, рекомендуется ознакомиться со следующими материалами:
Содержание |
Перевод шаблонов на ручной режим
Большинство индексных шаблонов можно перевести на ручной режим. Тогда публикация будет производиться вручную и нагрузка на сервер при добавлении/изменении контента снизится.
Шаблоны, которые обязательно нужно перевести на ручной режим публикации:
- Javascript;
- Таблица стилей (CSS);
- И все другие статические шаблоны, созданные вами.
Перевод шаблонов в режим очереди публикации
Некоторые шаблоны не обязательно публиковать сразу же. Например, архивы по месяцам, а также любые другие архивы со списком записей (см. Типы шаблонов (архивные шаблоны со списком записей)). Все эти архивы можно перевести в режим очереди публикации, это значительно увеличит общую скорость публикации.
Простой пример:
- У вас есть шаблон индексный шаблон Sitemap, в котором публикуются все записи, страницы и множество других данных. Если в блоге мало контента, то этот процесс не будет заметен. Но, если наоборот, то, например, при каждом добавлении комментария будут ощущаться заметные тормоза.
- Тоже самое происходит при добавлении комментария и публикации архивных шаблонов. При добавлении комментария публикуется не только страница с записью, но также: страница с категорий, в которой размещена запись; архив по месяцам; и любые другие архивы, в которых присутствует эта запись.
Чтобы перевести шаблон в режим очереди, откройте его, а затем в опциях выберите «С использованием очереди публикации».
Примечание: для корректного использования очереди публикации необходимо настроить скрипт run-periodic-tasks.
Сокращение количества модульных шаблонов
В стандартных шаблонах Movable Type (те, которые создаются при создании блога), присутствуюет множество модульных шаблонов. Например: HTML Head, Боковое меню, Детали комментария, и др. Эти шаблоны включаются в другие с помощью тега <mt:Include module="Имя модульного шаблона" />
.
Можно сократить количество модулей путём размещения их кода сразу же в шаблонах, либо использовать тег <mt:SetVarTemplate>. Пример использования этого тега:
- Сначала в шаблоне необходимо создать блок с кодом:
<mt:SetVarTemplate name="VAR_TEMPLATE_NAME"> Код шаблона </mt:SetVarTemplate>
- А затем в нужном месте шаблона вызвать этот код:
<mt:Var name="VAR_TEMPLATE_NAME" />
Кеширование шаблонов
Кешировать можно модульные шаблоны. Хотя по умолчанию в стандартных шаблонах ни один модуль не использует кеширование. Перед настройкой кеширования шаблонов, нужно зайти в «Параметры -> Публикация» и активировать модуль кеширования.
Примечание: следует учесть, что нельзя кешировать шаблоны, в которых присутствуют изменяющиеся данные, иначе на всех страницах будет один и тот же контент. Например, нельзя кешировать шаблоны «Комментарии» и «Детали комментария», так как в первом случае во всех записях будут комментарии к одной записи, а во втором — в каждой записи все комментарии будут одинаковыми.
Кеширование модульных шаблонов желательно использовать следующим образом:
- У вас есть индексный шаблон, например, sitemap.xml.
- Вы можете создать модульный шаблон «SitemapModule», который при помощи тега
<mt:Include module="SitemapModule" />
включить в индексный шаблон sitemap.xml. И указать для шаблона «SitemapModule» обновление кеша 1 раз в сутки. - После этого индексный желательно перевести в режим очереди публикации. В этом случае нагрузка будет минимальная.
Использование PHP
Как известно, Movable Type позволяет публиковать файлы с любым расширением. Чтобы достичь максимальной производительности, можно «вынести» все неизменямые части шаблонов в индексные шаблоны и публиковать их в ручном режиме. И включать их в остальные шаблоны не с помощью <mt:Include />
, а используя встроенные средства PHP.
Пример:
- У каждого блога есть навигация, контент в которой одинаковый на всех страницах. Чтобы не публиковать множество файлов при изменении этого контента, достаточно создать индексный шаблон navigation.php, который затем включить в остальные шаблоны:
<?php include ('/home/username/example.com/docs/navigation.php'); ?>
Но можно использовать PHP и при помощи встроенной в MT технологии SSI. Для этого её нужно активировать в «Параметры -> Публикация» — в пункте «Включении на стороне сервера» необходимо выбрать «PHP-включение».
Пример:
- После активации необходимо создать модульный шаблон «NavigationModule» и в необходимом месте шаблона использовать тег <mt:Include />:
<mt:Include module="NavigationModule" ssi="php" />
В этом случае Movable Type сам сгенерирует PHP-файл, который будет располагаться в папке includes_c
. Кстати, при использовании этого варианта можно использовать кеширование.