Влияние htaccess на время загрузки

В общем, есть две возможности обработки информации на Apache:

  • сделать конфигурации для папок одну за другой, используя файл htaccess

  • , чтобы полностью откажитесь от htaccess и поместите все правила в httpd.conf

. Использование htaccess - это проблема времени загрузки. Я хочу знать, насколько дорого с точки зрения времени загрузки использование htaccess? Существуют ли какие-либо тесты?

15
задан 2 June 2016 в 10:38
4 ответа

Рекомендация из проекта 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-файлов, зависит от их сложности.

Для этого потребуется тщательное сравнение, чтобы определить.

22
ответ дан 2 December 2019 в 20:47

Расходы зависят от того, насколько мощным является сервер, в частности, его подсистема ввода/вывода хранилищ, а также от того, используется ли кэширование.

Способ проверки заключается в настройке вашей системы с помощью .htacess и load test таким же образом, как и любого другого веб-сервера. Затем настройте систему без .htaccess и запустите те же самые тесты.

Сравните и сравните результаты для ваших сконфигурированных систем.

.
4
ответ дан 2 December 2019 в 20:47

Я тестировал с .htaccess и без .htaccess и на самом деле не смог найти никакой разницы в скорости или накладных расходах вообще. Конечно, я запустил только 16 сайтов и это супер быстрый сервер, так что в моем случае отследить миллисекунды практически невозможно. На сервере, на котором работают сотни сайтов, накладные расходы могут быть заметны, так что @Iain сказал test and see.

Я лично все делаю, используя .conf файл для виртуального хоста, а не .htaccess, он дает мне абсолютный контроль над всем, он чище и загружается один раз в память apache. Даже мои правила перезаписи wordpress находятся в .conf файлах, так что он никогда не сможет сломаться.

.
1
ответ дан 2 December 2019 в 20:47

Я не верю, что есть хоть один правильный ответ на ваш вопрос. Много ли переменных, которые могут повлиять на время загрузки htaccess:

  • Структура папок сайта: все .htaccess в каждой папке загружаются каждый раз при открытии страницы.
  • Сколько времени занимает htaccess-файл: 200 строк против 3500? есть большая разница.
  • .htaccess configuration: правила перезаписи и перенаправления могут быть более тяжелыми, чем другие (и не единственными).
  • Сетевое соединение на стороне клиента может влиять на время загрузки. IMO, вы можете попробовать его с нескольких мест и взять среднее время как ссылку.
  • ab - Apache HTTP server benchmarking tool может помочь вам

more info:

1
ответ дан 2 December 2019 в 20:47

Теги

Похожие вопросы