Что такое нагрузка на сервер, пожалуй, объяснять не нужно. Я однажды столкнулся с такой проблемой, правда, не на Престе, а на Джумле, когда за сутки мой серверный трафик превысил среднемесячный. Пришлось сменить тарифный план хостинга, дающий право использовать 5% серверного ресурса вместо 3%. Этот факт меня насторожил, и я занялся изучением процесса. Если кратко, то львиную долю ресурса пожирают запросы на css и js файлы. С Джумлой я эту проблему решил довольно просто написанием системного плагина. Когда пришло время заняться Престой, то экономия серверного ресурса встала для меня на первый план. «О, ужас!» - Преста является поистине пожирателем ресурса (особенно Преста-1.4, где я насчитал около 30 запросов при загрузке главной страницы) ! Собственно говоря, я пользуюсь 1.3 версией, и с 1.4 занялся чисто по-приколу.
Есть такая хорошая штучка, называется fetchscript (сборщик скриптов), позволяющая уменьшить количество запросов до 2. Механизм работы довольно прост: браузер дает запрос, например на css, и все заявленные файлы стилей грузятся оптом. То же самое и для js. И тут убиваем сразу 2-х зайцев - снижаем нагрузку на сервер и экономим время пользователя.
К примеру, если стандартно Преста-1.4 делает вкупе 20 запросов (я насчитал только для стилей – аж 23!!!) то 1 тысяча посетителей (если одновременно) дадут нагрузку на сервер ZP = 20 тысяч. Применение плагина снижает ZP до 2 тысяч, и ZP в 20 тысяч будет эквивалентно одновременному посещению уже 10 тысяч посетителей(!). В общем, цифры говорят сами за себя.
Немного поколдовав, я написал класс Fetchscript, реализующий оптовый запрос. Идея проста: первоначально буферизируется вывод страницы, затем плагин вырезает все включения стилей и скриптов, компонует и вставляет всего два запроса на стили и скрипты в заголовок файла. Ну, еще минимизирует html-код. Все. Смотрим полученный код страницы и удивляемся!
Это только бета-версия, плагин требует еще доработки, как-то:
Парсинг кода стилей, задаваемых через <style type="text/css" >@import url(х.css); </style>;
Компрессия css и js кода и пр.
Также требуется реализация системных настроек. Например, чтобы можно было отключить плагин. Это бывает нужно при разработке, чтобы найти корявый путь к файлу (если сервер не может найти какой-нибудь файл). Ну и еще много чего, например, реализовать оптовый запрос картинок (тоже тема!).
Файл fetchscript.php находится в корне сайта, папка fetchscript – в директории tools.
- Для Престы-1.3 изменены файлы header.php и footer.php (в корневой директории).
- Для Престы-1.3 изменен только файл FrontController.php (из директории classes).
Все исходники в архиве (отдельно для версий 1.3 и 1.4).
Испытывайте, развивайте!
Дальнейшая работа по развитию плагина будет освещена на
Пингвин-портале.
Новые версии будут выкладываться в
Ra-Shop (по символической цене).
ramzes_ra
P.S. Сомневаюсь, что после этой публикации, мои сайты заполонит поток посетителей, однако, я к этому уже готов, ведь мой плагин уже работает!
...Пока на сервер (с Престой0 не заливал — возникли проблемы с хостингом, блин!
Сообщение отредактировано ramzes_ra 15-02-2012 19:35 ...