- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Зачем быть уникальным в мире, где все можно скопировать
Почему так важна уникальность текста и как она влияет на SEO
Ingate Organic
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Здравствуйте.
Ситуация следующая, все запросы к сайту, исключая только запросы к существующим и доступным пользователю файлам, пересылаются в PHP скрипт index.php.
Сначала написал следующую реализацию с проверкой на доступность файла через подзапрос:
Все хорошо, только вот в документации PHP сказано, что -F тест выполняет через подзапрос к серверу и it can impact your server's performance!
Написал следующую реализацию:
Но как-то некрасиво...
Насколько ресурсоемкие подзапросы?
только вот в документации PHP сказано, что -F тест выполняет через подзапрос к серверу
1. эм.. а почему в документации PHP?
2. в REQUEST_FILENAME полный путь лежит.
3. запрос к файловой системе на проверку наличия файла делается - его не обойти.
---------- Post added 17-06-2013 at 18:09 ----------
2. в REQUEST_FILENAME полный путь лежит.
Поправлюсь.. не совсем так.. при обращении к файловой системе в -F не обязательно указывать %{DOCUMENT_ROOT}
в REQUEST_FILENAME полный путь лежит.
В VirtualHost обязательно. htaccess не использую. И даже для -F (только что проверил).
эм.. а почему в документации PHP?
Опечатка.
запрос к файловой системе на проверку наличия файла делается - его не обойти.
Вы понимаете разницу между эмуляцией (подзапросом) и проверкой на существование локального файла?
По сути, пожалуйста. Может кто-то поможет прочитать Rewritelog trace?
ortegas,
Вы понимаете разницу между эмуляцией (подзапросом) и проверкой на существование локального файла?
Понимаю.. !F и !f - это две "большие разницы". !f обращается к ФС.
---------- Post added 17-06-2013 at 19:27 ----------
А такой вариант совсем не рассматривается?
ivan-lev, говорите B, раз сказали A. Я не понимаю что вы хотите.
Спасибо. Я знаю. Я спрашиваю о производительности одно против другого (в цифрах). Еще я бы хотел услышать как раз таки о механизме подзапросов. Может кто-то быстренько сделает бенчмарк или прочитает логи выполнения каждого из вариантов. Но никак не демагогию об относительный путь против абсолютного (всегда использую абсолютный). Оба кода рабочие и мне больше по душе код с подзапросом, но... читайте первый пост.
Для меня это все тот же другой вариант. Как раз он и рассматривается в другом варианте. Здесь подзапрос против исключения, а не битва синтаксиса, понимаете? :)
Оба кода рабочие и мне больше по душе код с подзапросом, но... читайте первый пост.
Я, если честно, просто не понимаю задумки.
Естественно, подзапрос медленнее (т.к. это тоже самое обращение к FS + overhead на sub-query). На сколько конкретно (в цифрах) - зависит от конкретных условий.
С учётом Вашего стремления к оптимизации, есть смысл использовать вариант без подзапроса... Но опять же, можете "быстренько прогнать бенчмарки" на своём окружении (возможно 3-4-5 разных.. на локалке, на боевой машине...) и своими глазами посмотреть на результаты...
p.s. если в регулярках не указывать +$ - быстрее будет.
ivan-lev, смотрите. Директивы resource, kernel закрыты через Require all denied. Будут закрываться еще директивы, и в скором, PHP начнет обрабатывать и некоторые динамические файлы (css). PHP должен принимать все после адреса сайта, то-бишь, ему переадресовывается вся строка, но при условии что запросили не доступный файл. Если я сделают просто редирект при условии, что !-f, тогда при запросе существующего файла из закрытых директорий, запрос не будет передаваться PHP, а Apache будет выдавать существование файла ошибкой 403. Проверка через !-F решает эту проблему, синхронные с правами доступа регулярные выражения также решают эту проблему, но требуют тщательного редактирования конфигурации. Вот мне и интересно, оправдан ли здесь подзапрос. На данный момент, я использую именно !-F && !=/index.php. Бенчмарки под Apache никогда не делал, но вижу, что придется опять вникать в дебри самому.
Бенчмарки под Apache никогда не делал, но вижу, что придется опять вникать в дебри самому.
Я, конечно, извиняюсь за дикий оффтоп..
Если речь про свой проект.. Если речь про конечный результат.. Если переживаете за производительность - смотрите в сторону nginx location ^~ и try_files
Хотя, для расширения кругозора, для углубления познаний, в дебри вникать бывает полезно...
ivan-lev, о своем. Nginx - исключено. Спасибо.
---------- Добавлено 17.06.2013 в 19:57 ----------
Итак, провел тесты.
10000 запросов, 10 конкурирующих клиентов.
Результат для проверки через подзапрос -F на локальной машине 54.32 [#/sec], для исключений в виде регулярных выражений 38.16 [#/sec]. Первый вариант на удивление оказался намного производительнее (я почему-то так и думал). Всем спасибо.