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

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

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

Це потребує ретельного бенчмаркінгу для визначення.


4

Витрата залежить від того, наскільки потужним є сервер, зокрема це підсистема вводу / виводу для зберігання даних та чи є якесь кешування.

Спосіб перевірити це - налаштувати вашу систему з .htacess і завантажити тест так само, як і будь-який веб-сервер. Потім налаштуйте систему без .htaccess і запустіть ті самі тести.

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


1

Я не вірю, що є однозначна відповідь на ваше запитання. Є багато змінних, які можуть впливати на час завантаження htaccess:

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

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


1

Я пройшов тестування з і без .htaccess і справді не міг знайти різниці в швидкості чи накладних витратах. Звичайно, я запускаю лише 16 сайтів, і це дуже швидкий сервер, тому в моєму випадку відстеження мілісекунд майже неможливо. На сервері, на якому розміщено сотні сайтів, накладні витрати можуть бути помітними, так як @Iain сказав тест і дивіться.

Я особисто роблю все, використовуючи файл .conf для віртуального хоста, а не .htaccess, він дає мені абсолютний контроль над усім, він чистіший і завантажується один раз у пам’ять apache. Навіть мої правила перезапису WordPress є у моїх файлах .conf, тому він ніколи не може порушитися.


як швидко супер швидко?
Джеймс Кіркбі

@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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.