Дек 01
2009Оптимизация скорости работы сайтов
Рубрики: (Без рубрики) Автор: phpdude 01-12-2009
Добрый день, я не знаю кто знает, но сейчас я занимаюсь оптимизацией работы сайта http://www.ritmonexx.ru
Каких успехов добился Я: скорость генерации страниц возросла в разы (где то даже в десятки раз), перестал падать сервер, понемногу освобождается память и время процессорное.
Что было сделано: блочное кеширование частей страниц, оптимизация скл запросов, выброс лишних кусков кода и замена более подходящими
В чем же была проблема: движек oscommerce – написали те еще уебки(прошу за инглиш, но их по другому не назвать).
Собственно зачем я это написал все? Да потому что я только что выкинул переложил отдачу кешированных картинок с php’шки на apache веб сервер. Как? а давайте посмотрим.
Проблема была в том, что эти мудаки(разработчики) не придумали сразу как будет у них кеш картинок сохраняться и инвалидироваться, а решили просто написать «влоб», написали епть. в общем везде, где есть thumbnail’ы, на каждый thumbnail поднимался пхп, происходило соединение с бд, куча логики чтобы понять «А где же кеш картинка?», потом куча логики чтобы понять «А не состарился ли кеш и не надо ли обновить?» и подобные вещи. и все ЭТО ЧТОБЫ ПОКАЗАТЬ КАРТИНКУ!!! пиздец товарищи, таких кроме как мудаками и мудилами назвать более никак не могу увы. все ссылки на картинки стали иметь у них вид -
http://www.ritmonexx.ru/imagemagic.php?img=images/img_3688.jpg&w=100&h=75&page=
в чем же прелесть такой ссылки – в том, что понять где там хеш не так то просто, ведь хеш имя файла генерится вот так:
$filename = modify_tn_path($_GET['img'] .'.thumb_'.$page_prefix.$_GET['w'].'x'.$_GET['h'].'_'.$append_hash.'.'.$extension, false);
классно, неправда ли? Выходит что не так у и сложно, особенно если учесть что append_hash я сделал всегда =»dude» и extension=’jpg’ (всегда так делаю и мне пох на ваше мнение, браузеру известнее что это за файл). Осталось както понять как это все преобразовать в реальные пути. Пользоваться будет, конечно же mod_rewrite для apache веб сервера.
Объяснять что в ниже следующих правилах я не стану, ибо я не ударился головой «продумать все это второй раз», я просто приведу пару аксиом.
Первая – RewriteRule обрабатываются до бесконечности долго сверху вниз кругами пока находятся ПОДХОДЯЩИЕ условия и правила rewrit’а. Это пожалуй самый главный постулат в данной схеме
##### dude imagick hack! ####
RewriteCond %{REQUEST_URI} imagick-step-final/(.*)
RewriteCond images/thumbnails/%1 -F
RewriteRule imagick-step-final/(.*) images/thumbnails/$1 [L]
RewriteCond %{REQUEST_URI} imagick-step-final/(.*)
RewriteCond images/thumbnails/%1 !-f
RewriteRule imagick-step-final/(.*) /imagemagic1.php [L]
RewriteCond %{QUERY_STRING} [\^&]h=([^&$]*)
RewriteRule imagick-step-4/(.*) imagick-step-final/$1%1_dude.jpg [L]
RewriteCond %{QUERY_STRING} [\^&]w=([^&$]*)
RewriteRule imagick-step-3/(.*) imagick-step-4/$1%1x [L]
RewriteRule imagick-step-3 /imagemagic1.php [L]
RewriteCond %{QUERY_STRING} [\^&]page=(prod_info|popup)
RewriteRule imagick-step-2/(.*) imagick-step-3/$1prod_info_ [L]
RewriteRule imagick-step-2/(.*) imagick-step-3/$1 [L]
RewriteCond %{QUERY_STRING} img=([^&$]*)
RewriteRule imagemagic.php imagick-step-2/%1.thumb_ [NS,L]
####
Чтоже тут происходит?
видно что при первом совпадении -
RewriteRule imagemagic.php
Начинаются все мои пляска, сразу скажу что правила идут снизу вверх, чтобы серверу было проще так сказать
При первом совпадении мы сразу уходим в «виртуальный режим», то есть все мои извращения начинаются на виртуальном пути «imagick-step-$i», которого естественно не существует. Дальше по очереди снизу вверх накладываются условия и от их выполнения зависят следующие «виртуальные пути», которые удовлетворяют поставленным перед ними условиям, то есть на mod_rewrite я организовал неплохую такую логику! даже мой друг adw0rd сказал что,
[29.11.2009 23:26:33] Михаил Андреев (adw0rd/ad): после того как добавил "апачем" я задумался ) [29.11.2009 23:27:12] Михаил Андреев (adw0rd/ad): ну готового решения у меня точно нет [29.11.2009 23:27:26] Михаил Андреев (adw0rd/ad): ты хочешь через мод-реврайт?
то есть судя по его вопросу, он готов был предложить поставить нгинкс и не ебаться так сложно))) но увы у заказчиков это невозможно (а жаль, ибо нгинкс неплохо бы отдавал все это …)
в общем выводы:
- мне похуй прочтет ли это ктото
- Понадобится ли это кому то
- Понравилась ли тебе %username% эта статья если ты дочитал до сюда
- Я сделал эту статью чисто для себя, чтобы было где посмотреть этот метод при следующей подобной задаче.
ваш дуд.
Всея ПЫХА
adw0rd
Мавр
ГО
Irinax
«для себя…», все такое… пиздеж!
На форуме кто ссылку запостил? Тоже для себя?
А вообще если таки смог оптимизировать двигло в несколько раз, то уже отлично, потому как с ОсКомерцом работал и знаю что там за жопа.
на пыхе – для людей, там заинтересованные, а обращеня к %username% – для проходящих
пыха – свои!
«выкинул переложил» странный «словооборот»
«все ссылки на картинки стали иметь у них вид» – у SMF такая же херня
Ну статья более чем интересна, особенно часть где проскакивает мой никнейм
И особенно понравилось «мой друг adw0rd», сенкью дружище!
не ну хуле браза))) друг же! хоть лично и не знакомы, но эт овсе хуйня, придет момент и вотки выпьем)
да смф тотже пипец я думаю. не ковырял конечно глубоко, но явно тоже самое уг внутри
ты опять активизировался?
я смотрю ты любитель ковыряться в говно движках. фу, какой нибудь индус высрал кусок кода, а ты в него руками залазишь, фу какая мерзость
я и не засыпал. индусы тут не причем, это русские постарались
типа если русское говницо, то норм? своё говно не пахнет.
блять, я вот чего не пойму, ты же мега супер хуюпер программист, снеси тот движок к ебеням и напиши свой. ты ж блять спец.
помоги советом. я программист sap систем, но приходится в пыхе попыхивать. Есть короче файл с sms сообщениями, бинарный. я его распарсил на php и считал информацию. Нужна такая хуетень, загружаешь этот файл на сайте (ну как обычно делают, загрузить фото и т.д.) и сразу дать команду php скрипту его парсить. можешь объяснить, как эта цепочка делается.
я еще отличаюсь умом и неебической сообразиловкой. нахуй сносить работающий проект и пытаться переделать его? это нелогично, всегда иду по пути наименьшего сопротивления и меньших времязатрат
на примерно отображаешь форму (http://ru2.php.net/manual/en/features.file-upload.post-method.php – тут описаны подвод камни, один из них – обязаттельно у формы enctype=»multipart/form-data»)
ну и делаешь чтото типа
if($_FILES['file_field_name_in_form']['tmp_name'] && !$_FILES['file_field_name_in_form']['error'])
{
include ‘megalibs/BinaryFileParser.php’;
$data = parse_binary_file($_FILES['file_field_name_in_form']['tmp_name']);
}
$_FILES['file_field_name_in_form']['tmp_name'] – темповое имя загруженного файла, этот фйл будет существовать до окончания работы скрипта, потов оно автоматически удалится пхп интерпретатором.
сори чувак. я на тебя наехал зря похоже с самого начала, просто ты начал писать одновременно с каким то троллем … если конечно этот тролль не ты)) но судя по консенсусу нашему – вы разные линости.
пис
да хуйня.
давно хотел тебя спросить….. ищу движок под качественный сдл, с нуля писать ёборно. Можешь кратко охарактеризовать следующие варианты
Drupal
Joomla!
PHP-Nuke
TYPO3
WordPress
typo3 вроде как сервак кушает неплохо
drupal вроде как тоже
joomla точно кушает))))
php-nuke он еще живой чтоли оО
wordpress кушает поменьше жумлы субъективно, но на блог движке сдл .. странно