Рекомендація від проекту 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, залежить від їх складності.
Це потребує ретельного бенчмаркінгу для визначення.