Сначала обратите внимание, что использование файлов .htaccess или даже использование файла .htaccess снижает производительность.Как вы говорите Apache, чтобы сделать ввод / вывод в файловой системе, ища файлы .htaccess в дереве каталогов.Так что для лучшей производительности лучше иметь AllowOverride None
на <Directory />
(так из корневого каталога), и, конечно, вам не следует изменять настройку AllowOverride в любом подкаталоге.
Теперь, если вы.htacess с большим количеством правил, или <Directory /path/to/my/directory>
с большим количеством правил, что совершенно одинаково, за исключением того, что вторая версия будет читаться при запуске, а не для каждого запроса, тогда вы, конечно, замедляете youyr apacheпроцесс, как он должен проверить все правила.Но это обычно довольно быстро.Лучше всего отслеживать его с помощью некоторых инструментов, таких как autobench, httpperf, webinject, ab и т. Д.
В mod_rewrite есть способ ускорить процесс перезаписи, когда у вас много правил, использующих одну и ту же схему,Это RewriteMap .При использовании rewriteMap с хеш-файлом у вас, конечно, будет что-то с лучшей скоростью.Но rewriteMap требует, чтобы вы забыли о немых файлах .htaccess и действительно использовали файлы конфигурации apache для редактирования конфигурации apache (/etc/apache/*
).Поэтому вам необходим административный доступ к этой конфигурации.
И в конце вашего вопроса вы говорите о динамическом редактировании вашего .htaccess.Если ваши переписывания действительно динамичны, я бы забыл об использовании веб-сервера для обработки этого и вставил политику переписывания в код приложения (PHP / C # / etc).Или вы можете также использовать опцию prg:
rewriteMap и написать свой собственный скрипт на perl, python или что-нибудь еще, вызываемый apache mod-rewrite при каждом запросе, предоставляя политику перезаписи.И производительность переписывания будет зависеть от ваших навыков программирования.