Внимание! Форум временно закрыт. Все вопросы вы можете задать на странице MaxSite CMS в Github

Плагин для сжатия css

Аватар пользователя
SpinyMan
Сообщений: 72
Зарегистрирован: 11 окт 2009, 18:46

Re: Плагин для сжатия css

Сообщение SpinyMan » 04 июн 2010, 11:11

admin писал(а):а. Практический пример есть, где нужна такая работа со стилями?
б. В чем выигрыш?

а) Я написал плагин для сжатия css, который сжимает в gzip стили, подключенные к системе функцией (которую я описывал).
б) мой файл стилей = 19 кб, а с использованием плагина = 4 кб, в этом и выигрыш.
И как я уже описывал выше, иметь возможность управлять стилями из плагина - это шаг к использованию css-framework или других возможностей.

Аватар пользователя
MAX
Администратор
Сообщений: 3179
Зарегистрирован: 31 янв 2009, 19:02

Re: Плагин для сжатия css

Сообщение MAX » 04 июн 2010, 11:35

Разница мизерная, тем более еще не известно что будет быстрей: просто отдать файл как есть или предварительно выполнить кучу кода, сжать, а потом на стороне браузере еще и распаковать файл. Данный пример неудачен. Для оптимизации можно уж какой-нибудь css-упаковщик использовать. Наверняка это будет менее затратно.

А вот с этим

иметь возможность управлять стилями из плагина


возможно я и соглашусь, но совсем в другом русле. Первый путь - это переделать существующую схему: подключение стилей по хуку head. Ввести, скажем, хуки head_css, head_js и т.п., на которые и цеплять подключение стилей. В развитие идеи можно сделать подключение css-стилей через функцию, что-то вроде вашей mso_print_styles, где формируется нужный html-код. Минус этого подхода в том, что нужно переделывать кучу существующих шаблонов и плагинов. При этом неизвестно как будет всё работать в комбинации старого и нового подхода.

Второй путь - перенести логику на уровень шаблона и плагина. С шаблоном все более менее ясно - там как вебмастер решит так и будет: подключай хоть один css-файл, хоть сто. А по плагинам предусматривать возможность подключения css-файлов из шаблона (вместо файла плагина) или опционально отключать подключение css-файла (тогда все целиком ложится на шаблон). В качестве примера приведу плагин main_menu - там подключение css-файла проверяется по наличию main-menu.css в шаблоне. В принципе можно добавить и опцию на принудительное отключение css-файла.

lemb
Сообщений: 5
Зарегистрирован: 06 фев 2010, 21:56

Re: Плагин для сжатия css

Сообщение lemb » 20 дек 2010, 11:55

У данной идеи есть вполне оправданные преимущества:
Снимается лишняя нагрузка с сервера. Если мы склеиваем много CSS файлов в один то мы уже снимаем нагрузку так как к сервер получает меньше запросов. Но при этом значительно увеличится нагрузка на процессор при gzip’е. Решить эту проблему можно кэшированием.

В результате мы получаем:
  • Уменьшение нагрузки на сетевую инфрастраструктуру.
  • Уменьшение активности жесткого диска сервера.
  • Уменьшение (хоть и не значительное) трафика.
  • В зависимости от объема CSS файла можно получить ускорение отображения страницы у клиента.

В плагине делаем выбор использовать или нет gzip и определяем опытным путем стоит или нет его использовать именно на этом сайте.

Аватар пользователя
SpinyMan
Сообщений: 72
Зарегистрирован: 11 окт 2009, 18:46

Re: Плагин для сжатия css

Сообщение SpinyMan » 20 дек 2010, 12:03

lemb писал(а):У данной идеи есть вполне оправданные преимущества:
Снимается лишняя нагрузка с сервера. Если мы склеиваем много CSS файлов в один то мы уже снимаем нагрузку так как к сервер получает меньше запросов. Но при этом значительно увеличится нагрузка на процессор при gzip’е. Решить эту проблему можно кэшированием.

В результате мы получаем:
  • Уменьшение нагрузки на сетевую инфрастраструктуру.
  • Уменьшение активности жесткого диска сервера.
  • Уменьшение (хоть и не значительное) трафика.
  • В зависимости от объема CSS файла можно получить ускорение отображения страницы у клиента.

В плагине делаем выбор использовать или нет gzip и определяем опытным путем стоит или нет его использовать именно на этом сайте.

Ну, наконец-то нашелся хоть кто-то, кто решился меня поддержать ))
На сайте http://oriflame-mogilev.com/ использую такой плагин - сжимает (если стоит птичка gzip и есть ли поддержка браузером) и кеширует! Но без правки и вмешательства макса не обойтись. Если дожмем его все вместе, то плагину быть в общем доступе!

Аватар пользователя
MAX
Администратор
Сообщений: 3179
Зарегистрирован: 31 янв 2009, 19:02

Re: Плагин для сжатия css

Сообщение MAX » 20 дек 2010, 12:25

Меня сложно дожать. :)

Ради интереса посмотрел указанный сайт. Файл .css.php всегда отдаёт 200-заголовок, в то время, как обычные css - 304-й. Это значит, что обычные css даже не получаются с сервера, а сразу берутся из кэша браузера (конечно, если они там есть). А php-файл всегда должен отработать на сервере для каждой страницы для кажого посетителя. Более того, с учетом того, что данные передаются в gzip-сжатом виде, то очевидно, что на его обслуживаение тратится ещё больше ресурсов сервера.

Аватар пользователя
SpinyMan
Сообщений: 72
Зарегистрирован: 11 окт 2009, 18:46

Re: Плагин для сжатия css

Сообщение SpinyMan » 20 дек 2010, 12:35

admin писал(а):Меня сложно дожать. :)

Ради интереса посмотрел указанный сайт. Файл .css.php всегда отдаёт 200-заголовок, в то время, как обычные css - 304-й. Это значит, что обычные css даже не получаются с сервера, а сразу берутся из кэша браузера (конечно, если они там есть). А php-файл всегда должен отработать на сервере для каждой страницы для кажого посетителя. Более того, с учетом того, что данные передаются в gzip-сжатом виде, то очевидно, что на его обслуживаение тратится ещё больше ресурсов сервера.

Сжатие проходит единожды и потом сохраняется в кеше. А потом при следующем обращении пользователя к сайту, файл не загружается повторно, а берется из кеша браузера. Степень сжатия можно ругулировать из плагина, там же можно его и отключать, либо просто остваить комбинирование стилей без сжатия. Боишься за ресуры сервера? а не боится ли сервер отдавать по 10 css файлов, например? Можно же их сжать и выдать одним файлом )) Причем, плагин - дело добровольное: хочешь пользоваться - ставь и активируй. Твоя задача - сделать возможность БЫТЬ такого рода плагинам. Примеры я выкладывал на сайте, можешь взять их, либо придумать что-то свое.

Аватар пользователя
MAX
Администратор
Сообщений: 3179
Зарегистрирован: 31 янв 2009, 19:02

Re: Плагин для сжатия css

Сообщение MAX » 20 дек 2010, 12:54

Дело в том, что такой файл как раз и не берётся из кэша браузера. Я на это как раз и обратил внимание в предыдущем посте. Наверное нужно какой-то еще заголовок отдавать, но точнее сказать не могу.

Боишься за ресуры сервера? а не боится ли сервер отдавать по 10 css файлов, например?


Нет, не боится. Любая статика отдаётся вообще на лету. Для твоего варианта должен быть задействован апач, php, MySQL. Для любого статичного - только апач, а это на несколько порядков меньше расхода памяти и CPU.

lemb
Сообщений: 5
Зарегистрирован: 06 фев 2010, 21:56

Re: Плагин для сжатия css

Сообщение lemb » 20 дек 2010, 13:03

Код: Выбрать все

if (проверка кеша) {
    header('HTTP/1.1 304 Not Modified');
    exit;
}

что мешает поставить в плагине такую проверку?

На данный момент вижу только одну проблему:
  • При изменении CSS придется обновлять кеш плагина.
Но это можно обойти несколькими путями:
  • Хранить список файлов CSS и время от времени проверять изменялись они или нет.
  • Сбрасывать кеш вручную через админ панель
  • Отключать кеш вообще на время работы по изменению CSS
  • Реализовать API при котором другой плагин или что-то что меняет (редактирует) CSS будет сообщать о времени последней модификации. А плагин будет сверяться с этой датой и принимать решение о сбросе кеша.

Аватар пользователя
SpinyMan
Сообщений: 72
Зарегистрирован: 11 окт 2009, 18:46

Re: Плагин для сжатия css

Сообщение SpinyMan » 20 дек 2010, 13:29

Мы ща спорим ни о чем и решаем проблему, которой нет. Давайте, макс сделает первый шаг, а потом будем рассуждать на тему, как сделать такой плагин и как его наделить супер способностями.

lemb
Сообщений: 5
Зарегистрирован: 06 фев 2010, 21:56

Re: Плагин для сжатия css

Сообщение lemb » 20 дек 2010, 14:00

SpinyMan писал(а):Мы ща спорим ни о чем и решаем проблему, которой нет. Давайте, макс сделает первый шаг, а потом будем рассуждать на тему, как сделать такой плагин и как его наделить супер способностями.

Просто пытаюсь его переубедить :roll:


Вернуться в «Старые неактуальные темы»

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей