Назад | Перейти на главную страницу

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

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

Использование 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:

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

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