複数の isInNet 関数呼び出しが原因でインターネット エクスプローラーでの閲覧が遅い

警告

廃止され、サポート対象外となった Internet Explorer 11 デスクトップ アプリケーションは、特定のバージョンの Windows 10 で Microsoft Edge の更新プログラムを通じて完全に無効になります。 詳細については、「Internet Explorer 11 デスクトップ アプリの廃止に関する FAQ」をご覧ください。

この記事は、問題によってインターネット エクスプローラーの閲覧速度が予想よりも遅くなる問題を解決するのに役立ちます。

適用対象:インターネット エクスプローラー 9,インターネット エクスプローラー 10
元の KB 番号: 3140773

現象

次のような状況で問題が発生します。

  • インターネット エクスプローラーは、プロキシ設定にプロキシ自動構成 (PAC) ファイルまたは WPAD を使用するように構成されています。

  • PAC ファイルには、次のような関数の isInNet() 呼び出しがいくつか含まれています。

    function FindProxyForURL(url, host)
    {
    
        if (isInNet(host, "192.168.3.0","255.255.255.0")) ||
        isInNet(host, "10.10.1.0", "255.255.255.0") ||
        isInNet(host, "72.10.0.0", "255.255.0.0")) ||
        isInNet(host, "172.16.0.0", "255.255.0.0"))
        {
    
            return PROXY <proxyname:PORT>;
    
        }
    }
    

PAC ファイルにこのようなisInNet()呼び出しがいくつか存在する場合、インターネット エクスプローラーが Web ページを参照するのに予想以上に時間がかかります。

原因

この問題は、インターネット エクスプローラーがホスト パラメーターの IP アドレスを決定するために DNS サブシステムに対して追加の呼び出しを行う必要があるために発生します。 ホスト パラメーターの IP アドレスを関数呼び出しで提供される isInNet() IP アドレス範囲と比較するには、これを行う必要があります。

解決方法

ホストが関数呼び出しに渡されるたびに DNS サブシステムへのこれらの追加の呼び出しを isInNet() 防ぐには、ホスト名ではなく IP アドレスを渡すことで、呼び出しの外部の isInNet() IP アドレスにホスト名を解決する手順を実行します。

これを行うには、[現象] セクションのサンプル コード 次のように変更します。

function FindProxyForURL(url, host)
{
    var resolved_IP = dnsResolve(host);
    if (isInNet(resolved_IP, "192.168.3.0","255.255.255.0")) ||
    isInNet(resolved_IP, "10.10.1.0", "255.255.255.0") ||
    isInNet(resolved_IP, "72.10.0.0", "255.255.0.0")) ||
    isInNet(resolved_IP, "172.16.0.0", "255.255.0.0"))
    {
        return PROXY <proxyname:PORT>;
    }
}

関連情報

詳細については、「 自動プロキシ構成スクリプト (PAC) を使用したパフォーマンスの最適化」を参照してください。