Всем здарова. Сразу просьба, все описанное ниже пока только для античата, не распространяйте пожалуйсто. На эту тему напишу статью грамотную, но позже. А пока только введение. ЧПУ. Что такое ЧПУ? ЧПУ это Человечески Понятный Урл. Например http://forum.antichat.ru/showthread.php?p=35414 обычный урл, а http://antichat.ru/2005/04/08/.htm - ЧПУ. Это сейчас появилось такое название ЧПУ. Раньше, когда небыло всяких там php, это был обычный урл. Вообще наблюдается странная тенденция =) Сначала все писали на html и иметь в адрес типа blablabla.ru/?page=news было модным. Теперь все пишут на php и модным иметь адрес типа blablabla.ru/news.html =) Реализовать это можно как минимум 2-мя способами. Через mod_rewrite или серверный язык. В нашем случае серверным языком является php. Начнем. Сначало подумаем. Чисто теоритически, что быстрее будет работать? Реализация ЧПУ через .htaccess по средствам mod_rewrite или же средстами php, обрабатывая 404 ошибку. Чисто теоритически кажется, что mod_rewrite работает на более нихзком уровне и обрабатывает строку быстрее. Фиг там =) наглая лож. Начем с того, что mod_rewrite не работает на более низком уровне к серверу. Он работает на том же самом уровне, что и php. Потому что php это такой же модуль апача, что и mod_rewrite =) mod_php только называется =))) Мало того, идем дальше. При запросе http://antichat.ru/2005/04/08/.htm апач будет искать .htaccess во всех каталогах в представленном урле (а тут их 4, если глаза меня не обманывают) найдет ваш htaccess, спарсит его и только потом начнет выполнять правила. Мало того, на php все намного гибче, чем на mod_rewrite. Так что не верьте тому, кто будет рвать волосы на голове и утверждать что .htaccess быстрее обрабатывает ЧПУ =) К пример еще отмечу что на nnm.ru нагрузка на CPU упала ровно в 2 раза (-100%) после переноса htaccess`а в конфиг виртуальника. И это, замечу, пока без перевода ЧПУ на плечи php. там еще 10-30% экономии, думаю, будет. Пока все =)
>Сразу просьба, все описанное ниже пока только для античата, > не распространяйте пожалуйсто. так это все известно давно =О
Ну уж звиняйте тогда, лично дляменя это было новым. Дело даже не в подходе, а в выводе. Когда сервер стал падать от поситителе nnm.ru встал вопрос оптимизации. Я знал что это даст выгоды ну 10-20%, но не 100% же. угу
Все просто. Т.е. в htaccess пишешь что-то типа ErrorDocument 404 /index.php т.е. при ошибке будет редирект на index.php а там ты уже обрабатываешь серверную переменную SCRIPT_URI или SCRIPT_URL, смотря как там сервер настроен. И все. НО! Переведя полностью nnm на ЧПУ с помощью php я понял что это не правильно. Ибо при смене заголовка на 404 (а он меняется апачем по любому, при испольхования данного метода) отчищается весь POST, а это плохо. Я юзаю <form method=post> говорите что угодно, но это самый безопасный метод передачи данных, у меня куча фактов, но сейчас не о этом. Я пришел к выводу что топ нужно было назвать на PHP vs mod_rewrite а PHP and mod_rewrite. Все ЧПУ формируется на PHP, но .htccess должен содержать следующий текст ErrorDocument 404 /404.html DirectoryIndex index.php RewriteEngine on RewriteRule ^/.*(.html|/)$ /index.php В данном случае как раз, как можете заметить, все данные будут помещены в переменную SCRIPT_URI без передачи ее в строке. Для меня это идеально, ибо чем меньше передачи данных - тем меньше нагрузка на сервер, а для меня это критично. Либо htaccess может содержать что-то типа ErrorDocument 404 /404.php DirectoryIndex index.php RewriteEngine on RewriteCond %{THE_REQUEST} !\.css RewriteCond %{THE_REQUEST} !\.jpg RewriteCond %{THE_REQUEST} !\.gif RewriteCond %{THE_REQUEST} !\.png RewriteCond %{THE_REQUEST} !\? RewriteRule ^/.*$ index.php?url_data=%{THE_REQUEST} Но это все уже зависит от случая, когда что. Лично мне больше подходит первый способ. Скоро напишу статью, скоро.
Хо хо ))) будемспорить? =) Нагрузка была почти 200 процентов, стала 90. 200 - 50 = 90 ? =))) ХЗ не пробовал.
>Хо хо ))) будемспорить? =) Нагрузка была почти 200 процентов, стала 90. 200 - 50 = 90 ? =))) а почему это было 200? целое - сто процентов =)