Всея ПЫХА epsyl adw0rd Мавр ГО Irinax http://hell.helldude.ru - это пиздец

Оптимизация скорости работы сайтов

Рубрики: (Без рубрики) Автор: 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): ты хочешь через мод-реврайт?

то есть судя по его вопросу, он готов был предложить поставить нгинкс и не ебаться так сложно))) но увы у заказчиков это невозможно (а жаль, ибо нгинкс неплохо бы отдавал все это …)

в общем выводы:

  1. мне похуй прочтет ли это ктото
  2. Понадобится ли это кому то
  3. Понравилась ли тебе %username% эта статья если ты дочитал до сюда
  4. Я сделал эту статью чисто для себя, чтобы было где посмотреть этот метод при следующей подобной задаче.

ваш дуд.

Комментарии RSS тут:

Всего отзывов: 17 на Оптимизация скорости работы сайтов

Оставьте свой отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

О САЙТЕ

Крик души может быть будет на этом сайте, а может и будет что-нибудь другое :)



Яндекс.Метрика