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

15

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

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

  • полностью подать в отставку htaccess и поместить все правила в httpd.conf

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

Евгений
источник

Ответы:

22

Рекомендация от проекта 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и прочитать его (вызывая другую операцию чтения ввода-вывода и обычно также операцию записи ввода-вывода для обновления atimeатрибута файловой системы ) и проанализировать его, прежде чем можно будет применить логику в нем.

В отличие от того, когда ваши директивы находятся в главном httpd.conf, который требует только apache для их анализа один раз, при запуске каждый .htaccessфайл должен интерпретироваться снова для каждого запроса.

Насколько дорог, в дополнение к операциям ввода-вывода, анализ файлов .htaccess зависит от их сложности.

Это займет тщательный сравнительный анализ, чтобы определить.

HBruijn
источник
4

Стоимость зависит от того, насколько мощным является сервер, в частности его подсистема ввода-вывода, и задействовано ли какое-либо кэширование.

Чтобы проверить это, настройте вашу систему на .htacess и загрузите ее так же, как на любом веб-сервере. Затем настройте систему без .htaccess и запустите те же тесты.

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

user9517
источник
1

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

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

больше информации:

HEDMON
источник
1

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

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

MitchellK
источник
как быстро супер быстро?
Джеймс Киркби
@James Kirkby Я отправлю вам точные спецификации сервера позже, прямо сейчас из офиса. Я запускаю все в контейнерах Proxmox. Мой веб-сервер и мои 16 сайтов WordPress имеют 91-96 на Google Pagespeed, и я все еще настраиваю и оптимизирую.
MitchellK
@JamesKirkby Он имеет 2 x 6 основных процессоров и 64 Гб оперативной памяти, работающие под управлением Ubuntu 14.04, Apache 2.4.7 и PHP-FPM. Это просто чудовище, я в восторге от его производительности.
MitchellK