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

Есть ли ограничение для .htaccess?

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

Итак, кто-нибудь когда-нибудь пытался достичь предела? Будет ли .htaccess работать с 5000 правилами mod_rewrite? А как насчет 10 000? 20 000? Мой друг сказал, что работал над блогом, в котором было более 400 тысяч сообщений. Это когда-нибудь сработает?

Спасибо,

~ @kovshenin

Я почти уверен, что нет жесткого ограничения на количество правил mod_rewrite, которые вы можете использовать; apache в основном увидит файл .htaccess и выполнит правила mod_rewrite по порядку

Однако есть несколько ограничений, с которыми вы можете столкнуться:

  1. Размер файла. Размер файла .htaccess может составлять 2 или 4 ГБ. Может быть более низкий эффективный предел в зависимости от памяти (файл .htaccess может быть прочитан в память)
  2. Время. Для обработки каждого mod_rewrite требуется некоторое время (даже если оно не совпадает), в конечном итоге вы получите достаточно, чтобы вы могли измерить время в секундах, что было бы очень плохо.

Возможно, вы захотите изучить директиву RewriteMap и настроить хэш-файл и сократить свои 20 000 правил mod_rewrite до одного правила, которое вместо этого ищет запись в базе данных хеш-файла из 20 000 элементов.

Если вы являетесь администратором сервера, вам не следует использовать .htaccess в соответствии с рекомендациями Apache. Все, что есть в файле .htaccess, может и должно быть в <Directory> блок в конфиге. Причина в том, что Apache будет попадать на жесткий диск при каждом запросе на чтение и анализ этого файла перед отправкой содержимого. Это невероятный хит производительности.

Итак, не могли бы вы поместить в конфигурацию 20 000 строк, чтобы она загружалась в память? Лучше всего хранить правила в базе данных.

Рекомендуемая литература: http://httpd.apache.org/docs/2.0/howto/htaccess.html