В общем, есть две возможности обработки информации на 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 все еще должен открыть
и прочитать его (инициируя другую операцию чтения ввода-вывода , а также обычно также операцию IO записи для обновления атрибута файловой системы atime
atime) и разбора его до того, как логика в нем может быть применена.
В отличие от случая, когда ваши директивы находятся в главном httpd.conf
, которому для их разбора нужен apache только один раз, при запуске каждый файл .htaccess
должен быть снова интерпретирован для каждого запроса.
Насколько дорогой, в дополнение к операциям ввода-вывода, является разбор .htaccess-файлов, зависит от их сложности.
Для этого потребуется тщательное сравнение, чтобы определить.
Расходы зависят от того, насколько мощным является сервер, в частности, его подсистема ввода/вывода хранилищ, а также от того, используется ли кэширование.
Способ проверки заключается в настройке вашей системы с помощью .htacess и load test таким же образом, как и любого другого веб-сервера. Затем настройте систему без .htaccess и запустите те же самые тесты.
Сравните и сравните результаты для ваших сконфигурированных систем.
.Я тестировал с .htaccess и без .htaccess и на самом деле не смог найти никакой разницы в скорости или накладных расходах вообще. Конечно, я запустил только 16 сайтов и это супер быстрый сервер, так что в моем случае отследить миллисекунды практически невозможно. На сервере, на котором работают сотни сайтов, накладные расходы могут быть заметны, так что @Iain сказал test and see.
Я лично все делаю, используя .conf файл для виртуального хоста, а не .htaccess, он дает мне абсолютный контроль над всем, он чище и загружается один раз в память apache. Даже мои правила перезаписи wordpress находятся в .conf файлах, так что он никогда не сможет сломаться.
.Я не верю, что есть хоть один правильный ответ на ваш вопрос. Много ли переменных, которые могут повлиять на время загрузки htaccess:
more info: