Я пытаюсь упростить разработку и иметь высокооптимизированный выход в производство.
Цели того, что я пытаюсь сделать:
- Сделайте рабочие страницы быстрыми! Мне бы хотелось, чтобы Google Page Speed и YSlow возвращали лучшие баллы. Это означает:
- Объедините и сожмите JS-файлы и CSS и поместите группу в нужное место (внизу или вверху страницы) в HTML. Для .js Google Closure кажется лучшим выбором.
- .JS и .CSS тщательно кэшируются , но убедитесь, что они перезагружаются при обновлении компонента .JS или CSS. 301 Файл не изменен и т. Д.
- Тип кэша : Я думаю, что кэш на диске в порядке. Рассмотрите APC и Memcache или Redis, если они значительно улучшают скорость.
- Может указывать и использовать ленивая загрузка .JS при необходимости или, по крайней мере, не блокировать рендеринг страницы.
- (Необязательно) Сжатие HTML тоже.
- Упростите разработку веб-сайта :
- Используйте короткую команду в файле .php, если вы хотите включить .js или .css и сжимать их только в производственной среде.
- Используйте синтаксис, такой как pack_js (['first.js', 'second.js' 'third.js']) и pack_css (['first.less', 'second.less '' third.css '], true)
- Легко настроить среду разработки или производственную среду. Может быть, просто вызов SetDebug (true или false) . Производство по умолчанию
- Простота установки папок кеша и исходных папок
- Использование LESS , чтобы сделать разработку CSS меньше отстой. Автоматически компилируйте файлы LESS в CSS в производственной среде, но при разработке используйте LESS.js , чтобы при каждом изменении файла .less в процессе разработки он обновлялся на сервере.
- (необязательно). В разработке он включает JS и консоль LESS, аналогичную оболочке в https://www.squarefree.com/bookmarklets/webdevel.html
Примечание: можно использовать модули Apachee и файлы .htaccess, если они значительно ускоряют процесс. Но он должен быть в состоянии быстро их настроить, в идеале всего лишь с помощью команды установки.
Есть ли что-то, что делает это? Или какие ресурсы лучше всего начать?
Я бы предпочел решение, состоящее из сценария PHP (в конечном итоге, нескольких файлов .php, .htaccess и сжатия исполняемых файлов), который сжимает .JS с помощью компилятора Google Closure и сжимает / компилирует файлы CSS / LESS, удаляя ненужные комментарии и пробелы. Специальный файл cookie может использоваться на рабочем сервере для вывода версии для разработки.
Хотелось бы иметь:
Функцию php можно использовать так: pack_js (['first.js', 'second.js', 'third.js']) , которые пишут что-то вроде:
На серверах разработки:
<script type="text/javascript" src="static/js/first.js"></script>
<script type="text/javascript" src="static/js/second.js"></script>
<script type="text/javascript" src="static/js/third.js"></script>
На производственных серверах (если специального cookie нет):
<script type="text/javascript" src="cache/12a42323bfe339ea9w.js"></script>
Другая функция: pack_css (['first.less', 'second.less', 'third.css'], true) , которые пишут что-то вроде:
На серверах разработки:
<link rel="stylesheet/less" href="/static/css/first.less" type="text/css" />
<link rel="stylesheet/less" href="/static/css/second.less" type="text/css" />
<link href="/static/css/third.css" type="text/css" />
<script src="http://lesscss.googlecode.com/files/less-1.0.21.min.js"></script>
<script type="text/javascript" charset="utf-8">
less.env = "development";
less.watch();
</script>
На производственных серверах (если нет специального cookie):
<link href="/cache/46537a8b8e876f7a8e7.css" type="text/css" />
второй параметр указывает, нужно ли выводить файл less.js на сервере разработки
Очевидно, что 12a42323bfe339ea9w.js и 46537a8b8e876f7a8e7.css являются оптимизированной, упакованной и скомпилированной версией скрипта. Это решение должно быть в состоянии обнаружить, когда исходный файл изменяется, и перекомпилировать сценарии для производства. Он должен быть настраиваемым с учетом местоположения скрипта и типа кэширования (с диском все в порядке). В идеале в pack_js, вероятно, должна быть возможность сделать ленивую загрузку js в производственном процессе.
Приветствуется каждое предложение.