Как правило, в Apache есть две возможности обработки информации:
делать настройки для папок одну за другой, используя файл htaccess
полностью отказаться от htaccess и поместить все правила в httpd.conf
Использование htaccess - это проблема времени загрузки. Я хочу знать, насколько дорого с точки зрения времени загрузки использование htaccess? Есть ли тесты?
В рекомендация из проекта Apache:
Как правило, вы должны использовать файлы .htaccess только тогда, когда у вас нет доступа к основному файлу конфигурации сервера. ... распространенное заблуждение это то, что аутентификация пользователя и директивы mod_rewrite должны входить в
.htaccess
файлы.
Поэтому, пожалуйста, установите оба AllowOverride None
и все другие ваши директивы в главном httpd.conf (и / или в подразделах, которые вы Include
)
Когда Apache не настроено с участием AllowOverride None
у вас уже происходит (незначительное) снижение производительности, независимо от того, есть ли .htaccess
файлы используются.
Это потому что для каждого запроса apache необходимо будет проверить наличие потенциального .htaccess
файл в каждом (под) каталоге, ведущем к запрошенному ресурсу. Например, когда файл запрашивается из каталога / www / htdocs / example, apache должен искать следующие файлы:
/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess
Итак, для каждого доступа к файлу из этого каталога есть 4 дополнительных доступа к файловой системе, даже если ни один из этих файлов не присутствует. (Если AllowOveride установлен для /)
Системный вызов, используемый для этого (man 2 stat
) само по себе не так дорого, и обычно используется кеш файловой системы, а не опрос фактического диска, ограничивая фактические требования ввода-вывода, но все же он может складываться, поскольку Эта статья спорит.
Когда один или несколько актуальных .htaccess
файлы на самом деле присутствуют, apache все еще должен open
и читать это (запуск другое чтение IO операции и обычно также IO написать операция по обновлению файловой системы atime
атрибут) и разбирать это прежде, чем можно будет применить логику в нем.
В отличие от того, когда ваши директивы находятся в главном httpd.conf
, которому нужен apache только для их анализа один раз, при запуске, каждый .htaccess
файл необходимо интерпретировать заново для каждого запроса.
Насколько дорого, помимо операций ввода-вывода, будет анализ файлов .htaccess, зависит от их сложности.
Для определения этого потребуется тщательный сравнительный анализ.
Стоимость зависит от мощности сервера, в частности от подсистемы ввода-вывода хранилища, и от того, задействовано ли кэширование.
Чтобы проверить это, настройте вашу систему с помощью .htacess и нагрузочный тест это так же, как и любой веб-сервер. Затем настройте систему без .htaccess и запустите те же тесты.
Сравните и сопоставьте результаты для ваш настроенные системы.
Я тестировал с .htaccess и без него и не смог найти никакой разницы в скорости или накладных расходах. Конечно, у меня всего 16 сайтов, и это очень быстрый сервер, поэтому в моем случае отслеживание миллисекунд практически невозможно. На сервере с сотнями сайтов накладные расходы могут быть заметны, так как @Iain сказал test and see.
Я лично все делаю, используя файл .conf для виртуального хоста, а не .htaccess, он дает мне полный контроль над всем, он чище и загружается один раз в память apache. Даже мои правила перезаписи wordpress находятся в моих файлах .conf, поэтому они никогда не сломаются.
Я не верю, что есть однозначный правильный ответ на ваш вопрос. Есть много переменных, которые могут повлиять на время загрузки htaccess:
больше информации: