Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как правильно минимизировать css с помощью php

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Смешивание CSS файлов в один
Synov_son
Отправлено: 03 Сентября, 2013 - 16:42:10
Post Id


Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




Есть набор css фалов разбитых, скажем по-категориям, для удобства.
Есть задача: выводить все css файлы в одном.
Пытался так брать все css файлы из папки
PHP:
скопировать код в буфер обмена
  1. header("Content-type: text/css; charset: UTF-8");
  2.  
  3. $files = glob(CSS."*.css");
  4. foreach ($files as $file) {
  5.         $css = file_get_contents($file);
  6.         print $css;
  7. }

а в head вставляю
CODE (html):
скопировать код в буфер обмена
  1. <link rel="stylesheet" href="css.php" type="text/css">

Вообщем, таким методом тыка у меня ничего не вышло. Как правильно это реализовать ? Не понял

(Отредактировано автором: 03 Сентября, 2013 - 16:42:23)

 
 Top
etoYA
Отправлено: 03 Сентября, 2013 - 17:10:34
Post Id



Участник


Покинул форум
Сообщений всего: 1859
Дата рег-ции: Июль 2011  
Откуда: Крым


Помог: 21 раз(а)




 
 Top
Synov_son
Отправлено: 03 Сентября, 2013 - 17:25:12
Post Id


Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




etoYA пишет:
http://htmlbook.ru/css/import

точно, точно, спасибо
 
 Top
IllusionMH
Отправлено: 03 Сентября, 2013 - 17:27:29
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




etoYA, вот не нужно использовать @import т.к. это замедляет загрузку страницы.
Synov_son, лучше загуглить php css minification
 
 Top
esterio
Отправлено: 03 Сентября, 2013 - 17:32:16
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




А зачем все ети костили. Блин первый раз погрузиться дольше, ну а кеш в браузере то за чем придумали. Нет нужно же каждый раз нагружать ядро ПХП для поиска файлов и склеивания их в одно целое. Я понимаю если бы еще хидер для кеширования ишел. Но в Вашем примере только одни минуса
 
 Top
Synov_son
Отправлено: 03 Сентября, 2013 - 17:53:15
Post Id


Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




esterio пишет:
А зачем все ети костили. Блин первый раз погрузиться дольше, ну а кеш в браузере то за чем придумали. Нет нужно же каждый раз нагружать ядро ПХП для поиска файлов и склеивания их в одно целое. Я понимаю если бы еще хидер для кеширования ишел. Но в Вашем примере только одни минуса

Я же говорю, есть задача, зачем, то совсем другое дело.
(Добавление)
IllusionMH пишет:
etoYA, вот не нужно использовать @import т.к. это замедляет загрузку страницы.
Synov_son, лучше загуглить php css minification

Гуглил нашел только скрипты удаления пробелов, преобразования в одну строку и т.д.
Знаю что замедляет, но не могу додуматься до альтернативы.

(Отредактировано автором: 03 Сентября, 2013 - 17:56:50)

 
 Top
DelphinPRO
Отправлено: 03 Сентября, 2013 - 22:13:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




1. @import - не подходит для решения задачи. т.к. файлы по-прежнему грузятся по-одному. Количество запросов к серверу не уменьшается.
2. ваш скрипт можно переписать так
PHP:
скопировать код в буфер обмена
  1. header("Content-type: text/css; charset: UTF-8");
  2.  
  3. $files = glob(CSS."*.css");
  4. $css = '';
  5. foreach ($files as $file) {
  6.         $css .= file_get_contents($file) . ';' . "\n";
  7. }
  8. echo $css;

Но запускать php-процесс на каждый вызов стилей - не комильфо. Нужно разрулить на уровне индейца. Пусть проверяет, существует ли результирующий файл, и отдает либо его, либо запускает пых.
3. Из второго пункта следует вывод - лучше пережимать файлы перед выкладкой на сервер. Т.е. Выкладывать уже готовые, сжатые. Для этого подойдет любой онлайн-сервис минификации, или десктопная программа.
4. Лучше всего с этим справится sass-препроцессор с опцией "compressed"

(Отредактировано автором: 03 Сентября, 2013 - 22:14:01)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
LIME
Отправлено: 03 Сентября, 2013 - 22:31:39
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




и каков профит от таких шевелений?
поддержу естерио
препроцессор хорош если каша из файлов
нет?
 
 Top
DelphinPRO
Отправлено: 03 Сентября, 2013 - 23:56:06
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




LIME пишет:
и каков профит от таких шевелений?

ну у меня рабочая станция настроена ) на ней есть установленный ruby\sass. Есть заготовка для новых проектов. Копирнул заготовку в рабочую папку, запустил слежение в sass и спокойно работаешь\верстаешь. В sass-файлах директива @import именно внедряет вызываемый файл в вызывающий. Стили в sass-файлах раскиданы по логическим группам, а на выходе автоматом получаем единый минифицированный CSS. Без всяких заморочек.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Мелкий Супермодератор
Отправлено: 04 Сентября, 2013 - 09:30:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




LIME пишет:
и каков профит от таких шевелений?

1 запрос на 10кб значительно дешевле 10 запросов по 1кб.
Если добавить gzip static (всё равно же процессить css, шагом меньше, шагом больше - какая разница?) - профит налицо.

Экономия времени на загрузку, экономия трафика, экономия ресурсов сервера.
При сохранении удобства разработки и разбиения несвязанных между собой css на разные файлы. Плюс препроцессор может давать свои плюшки, вроде автоматической подстановки префиксов вендорных свойств - в профите невозможность что-то забыть описать и более чистый исходный код.


-----
PostgreSQL DBA
 
 Top
LIME
Отправлено: 04 Сентября, 2013 - 09:42:22
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Мелкий пишет:
1 запрос на 10кб значительно дешевле 10 запросов по 1кб.
только при первом обращении
 
 Top
Zuldek
Отправлено: 04 Сентября, 2013 - 09:56:39
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Не понимаю для какого удобства держать 10 css файлов, а не один и склеивать их каждый раз пыхой... .
Если для удобства редактирования этих css файлов, — то это проблема рук, а не поставленная задача.
 
 Top
DelphinPRO
Отправлено: 04 Сентября, 2013 - 10:03:47
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




LIME пишет:
только при первом обращении

Умножим на количество посетителей.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
avtor.fox
Отправлено: 04 Сентября, 2013 - 10:07:10
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012  
Откуда: Воронеж


Помог: 50 раз(а)




Zuldek пишет:
Не понимаю для какого удобства держать 10 css файлов

Сталкивался с таким, что (не) каждая страница сайта должна быть уникальной. В данном случае хранить все стили в одном не кошерно. Да и вообще, копаться в тысячах строк отвратительно. А так открыл нужный стиль, изменил что-нибудь и вуаля.
 
 Top
Synov_son
Отправлено: 04 Сентября, 2013 - 10:55:32
Post Id


Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Авг. 2013  


Помог: 0 раз(а)




avtor.fox пишет:
Zuldek пишет:
Не понимаю для какого удобства держать 10 css файлов

Сталкивался с таким, что (не) каждая страница сайта должна быть уникальной. В данном случае хранить все стили в одном не кошерно. Да и вообще, копаться в тысячах строк отвратительно. А так открыл нужный стиль, изменил что-нибудь и вуаля.

Для удобства создания и редактирования новых шаблонов для своего движка, например на этом сайте будут другие цвета - идем в colors.css, а тут будут другие размеры - идем в sizes.css. А теперь все же к делу. Как их правильно склеить: может создания файла на лету и использование его как и обычно. Или есть все же способ заставить работать
CODE (html):
скопировать код в буфер обмена
  1. <link rel="stylesheet" href="css.php" type="text/css">

именно php файл. Где я пишу
PHP:
скопировать код в буфер обмена
  1. header("Content-type: text/css; charset: UTF-8");
  2.  
  3. $files = glob("templates/default/css/*.css");
  4. foreach ($files as $file) {
  5.         include($file);
  6. }

(Добавление)
DelphinPRO пишет:
2. ваш скрипт можно переписать так

Так тоже не работает. И @import не работает...
PHP:
скопировать код в буфер обмена
  1. <style><?PHP
  2. foreach ($files as $file) {
  3.         print("@import '$file'");
  4. }
  5. ?></style>
  6.  

(Добавление)
DelphinPRO пишет:
3. Из второго пункта следует вывод - лучше пережимать файлы перед выкладкой на сервер. Т.е. Выкладывать уже готовые, сжатые. Для этого подойдет любой онлайн-сервис минификации, или десктопная программа.
4. Лучше всего с этим справится sass-препроцессор с опцией "compressed"

Думаю, так действительно лучше. Просто хотел, что бы не случалось, что вроде и отредактировал файлы, а забыл перезаписать результирующий файл. Вообще такая идея пришла, когда редактировал сайт заказчику, там стояла джумла и шаблон написанный с использованием ооп (в настройках можно было редактировать цвета и размеры). Так при
inspect element браузером показывался только один файл стилей типа css.php?id=14&file=default
(Добавление)
Попробую все же создавать результирующий файл и проверять не только его существование но и брать размер всех файлов css и умножать на коэффициент, который будет давать сжатие и если размеры не будут соответствовать то перезапись файла

(Отредактировано автором: 04 Сентября, 2013 - 10:57:01)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB