Главная
Блог разработчиков phpBB
 
+ 17 предустановленных модов
+ SEO-оптимизация форума
+ авторизация через соц. сети
+ защита от спама

Плагин для Smarty — Combine

Anna | 31.05.2014 | нет комментариев

Плагин разрешает собрать несколько CSS либо Javascript файлов вместе.

Я согласен, что сходственных программных решений дюже много, скажем MinifyYUI Compressor либоконкантенатор из Pagespeed service от Google. Но для шаблонизатора Smarty мне сходственного не попадалось, и я решил написать свое и примитивней.
Combine
Плагин работает достаточно легко: когда один из включаемых файлов изменяется, он создает новейший выходной файл и возвращает к нему путь.

Плагин разрешает решить 2 задачи — модульность и контроль за обновлением файлов на стороне заказчика.
Задача модульности заключается в том, что для касательно трудных планов доводится подключать огромное число различных CSS и JS файлов. Все это приводит к дополнительным запросам к серверу. Да, front-end сервера с этим восхитительно справляются, но для чего делать 10 запросов, когда дозволено сделать один? А если хочется сократить это число привычными способами, доводится применять разные добавочные решения либо собирать файл вручную. Лично для меня, файл позже первой 1000 строк превращается в дьявольское месиво, следственно я усердствую разделять код на несколько модулей либо фрагментов.
Задача контроля за обновлением источников на стороне заказчика не менее главна. Наверно многие сталкивались со ветхой версией CSS либо JS файла у какого-нибудь заказчика, которая вызывала ошибку из-за изменившейся верстки либо API на back-end’e. И здесь подводных камней подлинно много, т.к. кэширование зависит и от браузера, и от прокси, а может еще и от провайдера зависеть (редко, но некоторые держат прозрачный прокси). Исключительный стопроцентно рабочий метод — изменить имя файла. Остальные могут не сработать.

У плагина есть список из 3 входных параметров:

  1. input, представляющий собой легкой массив, содержащий в себе список путей к склеиваемым файлам;
  2. output, представляющий собой путь к выходному файлу;
  3. age, время в секундах между проверками на метаморфоза одного из включаемых файлов. Данный параметр дозволено опустить, по умолчанию он равен 3600 секундам.

Расскажу для чего необходим age — операции ввода-итога одни из самых проблемных на сегодняшний день. Невзирая на возникновение SSD-накопителей, время доступа к файлу все же присутствует и, если много обращений к файлам, в приложении могут появляться задачи продуктивности. Теперь это все отлично кэшируется, но для чего же обращаться в кэш, когда этого дозволено не делать? Всякий разработчик сам вправе регулировать частоту проверки на востребованость файлов, но я бы не рекомендовал ставить поменьше 3 секунд, так как это примерно безрезультатно. В своих планах я передаю данный параметр в виде переменной, которая зависит от режима работы сайта. Если сайт находится в режиме отладки, там 5 секунд, в отвратном случае — 3600.

Начальный код

Код доступен на GitHub.

Пример подключения в образце

В Smarty 3 есть вероятность создания массива на лету, следственно код приведен с учетом этой вероятности. Для Smarty 2 массив необходимо передавать через отдельную переменную.

<script type="text/javascript" src="/{combine input=array('/js/core.js','/js/slideviewer.js') output='/js/big.js' age='30'}" > </script> 

При работе плагина есть несколько ньюансов. Путь к файлам должен идти от document_root, а папка с выходным файлом должна разрешать запись и создание новых файлов. Невозможно единовременно объединять файлы CSS и JS.

Плагин протестирован с Smarty 2 и Smarty 3. Теперь применяется в плане с посещаемостью около 4000 человек в сутки. Задач не отслеживал. Буду признателен за багрепорты и предложения по становлению.

Источник: programmingmaster.ru

Оставить комментарий
Форум phpBB, русская поддержка форума phpBB
Рейтинг@Mail.ru 2008 - 2017 © BB3x.ru - русская поддержка форума phpBB