Плагин позволяет объединить несколько файлов CSS или Javascript вместе.
Согласен, что подобных программных решений очень много, например Минимизировать , ЮИ Компрессор или конкантенатор из сервиса Google Pagespeed. Но для шаблонизатора Умник Ничего подобного мне не попадалось, и я решил написать свой, более простой.
Плагин работает достаточно просто: при изменении одного из включаемых файлов он создает новый выходной файл и возвращает его путь.
Плагин позволяет решить 2 проблемы — модульность и контроль над обновлением файлов на стороне клиента.
Проблема с модульностью в том, что для относительно сложных проектов приходится включать большое количество различных файлов CSS и JS. Все это приводит к дополнительным запросам к серверу.
Да, фронтенд-серверы с этой задачей прекрасно справляются, но зачем делать 10 запросов, когда можно сделать один? И если вы хотите уменьшить это число обычными методами, вам придется использовать различные дополнительные решения или собирать файл вручную.
Лично у меня после первых 1000 строк файл превращается в адскую кашу, поэтому я стараюсь разбить код на несколько модулей или фрагментов.
Не менее важна проблема контроля обновлений ресурсов на стороне клиента.
Наверняка многие сталкивались со старой версией CSS или JS-файла от какого-то клиента, которая вызывала ошибку из-за измененной верстки или API на бэкенде.
И здесь действительно много подводных камней, потому что.
кеширование зависит как от браузера, так и от прокси, а также может зависеть от провайдера (редко, но некоторые используют прозрачный прокси).
Единственный 100% рабочий способ — изменить имя файла.
Остальное может не сработать.
Плагин имеет список из трех входных параметров:
- input — простой массив, содержащий список путей к объединяемым файлам;
- вывод — путь к выходному файлу;
- возраст, время в секундах между проверками на изменения в одном из включаемых файлов.
Этот параметр можно опустить; по умолчанию это 3600 секунд.
Несмотря на появление SSD-накопителей, время доступа к файлам все еще присутствует, и если обращений к файлам много, в приложении могут возникнуть проблемы с производительностью.
Теперь все это хорошо кэшируется, но зачем обращаться к кешу, когда в этом нет необходимости? Каждый разработчик имеет право регулировать частоту проверки актуальности файлов, но я бы не советовал устанавливать ее менее 3 секунд, так как это практически бессмысленно.
В своих проектах я передаю этот параметр как переменную, которая зависит от режима работы сайта.
Если сайт в режиме отладки, то 5 секунд, иначе — 3600.
Источник
Код доступный на Гитхабе.
Пример подключения в шаблоне
В Smarty 3 есть возможность создавать массив на лету, поэтому код дан с учетом этой возможности.В Smarty 2 массив необходимо передавать через отдельную переменную.
<script type="text/javascript"
src="/{combine input=array('/js/core.js','/js/slideviewer.js') output='/js/big.js' age='30'}" >
При использовании плагина есть несколько нюансов.
Путь к файлам должен быть от document_root, а папка с выходным файлом должна разрешать запись и создание новых файлов.
Вы не можете комбинировать файлы CSS и JS одновременно.
Плагин протестирован со Smarty 2 и Smarty 3. На данный момент используется в проекте с трафиком около 4000 человек в день.
Я не заметил никаких проблем.
Буду благодарен за сообщения об ошибках и предложения по развитию.
Теги: #автоматизация #php #smarty #php
-
Продажа Компьютеров
19 Oct, 24 -
Освобождаемся От Тирании Конференц-Залов
19 Oct, 24 -
Directaccess В Windows 7. Часть 3
19 Oct, 24 -
Видеоархив Youtube Вырос До 45 Терабайт
19 Oct, 24