Apacheの基本認証でLDAPとファイル認証を併用すると一部ユーザのアクセスが遅い

tracapachefcgi経由で使っています。認証は基本LDAP(ActiveDirectory)にまかせて、一部特別なユーザはファイル認証にしています。
Apacheの認証周りの設定はこんなかんじ。

        AuthType                    Basic
        AuthBasicProvider           ldap file
        AuthName                    "Enter your ID"

        AuthUserFile                /usr/local/apache/conf/.htpasswd
        Require                     valid-user
        Order                       Allow,Deny
        Allow from                  All

        AuthLDAPBindAuthoritative   on
        AuthLDAPBindDN              administrator@example.com
        AuthLDAPUrl                 "ldap://ad.example.com:389/dc=example,dc=com,?sAMAccountName?sub?(objectClass=*)"
        AuthLDAPBindPassword        "admin-password"
        Require                     ldap-attribute objectClass=person

ところで、一部ユーザのアクセスがとっても遅いというレポートがありました。
いろいろ調べていると、tracの管理者でファイル認証をしているユーザであることがわかりました。

原因がどこにあるか調べるため、ファイル認証を一般ユーザにしてみたり、AD認証ユーザを管理者にしてみたり、またブラウザを変えて実験したりしてみたところ、どうやらファイル認証を用いると遅いということがわかりました。

tracの設定やFCGIも疑ったのですが、まったくの静的ファイルでも同じ現象だったので完全にこれは認証周りの問題。

ということで上記の認証周りの設定をもう一度見直します。関係ありそうなのはAuthBasicProviderでしょうか。マニュアルを参照。とくになにも書いてないなぁ。

順番がよくないのかとこう変更してみました。

        AuthBasicProvider           file ldap

"ldap file"となっていたのを"file ldap"としてみる。推測としては、認証するときに記述されている順番で認証をトライするのではないかということ。そうするとファイル認証に書かれているユーザはldap(AD)にはないので、ADにタイムアウトを待ってからファイル認証をするはず。そりゃ時間がかかるだろう。
ファイル認証に書かれているユーザはせいぜい5人程度なので逆の順番にすれば、早くなるのでは・・・

ということでこれがビンゴでした。とっても早くなって快適。