«Coloque o caso comum primeiro» é um conselho incompleto para um ficheiro PAC. O primeiro return encerra a decisão. Quando as regras se sobrepõem, a ordem delas faz parte da política de rotas.

Considere um proxy privado para um serviço e uma rota direta para o resto do seu domínio:

function FindProxyForURL(url, host) {
    host = host.toLowerCase();
    if (host === 'restricted.example.net') {
        return 'PROXY proxy.example.net:8080';
    }
    if (dnsDomainIs(host, '.example.net')) {
        return 'DIRECT';
    }
    return 'PROXY proxy.example.net:8080';
}

Os nomes são exemplos. Mover a verificação ampla de sufixo para cima da exceção do host exato envia o serviço restrito diretamente. O script pode ficar mais curto ou rápido enquanto faz a coisa errada.

Agrupe as condições sem perder a precedência

Quando uma lista grande é realmente um conjunto de nomes de host exatos, de igual nível e com um único resultado, uma estrutura de pesquisa adequada pode ser mais clara do que verificações repetidas de padrões. Essa equivalência tem de ser estabelecida primeiro. Um nome exato, um wildcard e uma regra de intervalo de endereços não pertencem automaticamente a um conjunto intercambiável.

Do mesmo modo, remover www. é uma mudança de política se os dois nomes usam rotas diferentes de propósito. Otimizar uma comparação de strings não deve redefinir o destino em silêncio.

Remova o trabalho caro de que a decisão não precisa

Uma verificação de igualdade de nome de host não exige DNS. Resolva apenas quando a política restante precisar de um endereço, e evite repetir a mesma consulta numa avaliação onde o ambiente PAC suportado permita reutilização.

Mantenha um pequeno conjunto de decisões esperadas junto ao ficheiro: a exceção específica, um irmão sob o sufixo amplo, um nome de host não relacionado e os literais de endereço relevantes. Compare a rota devolvida e a ordem de eventuais entradas de fallback, não apenas se o JavaScript é analisado. Quando esses resultados coincidirem, verifique se o navegador carregou o PAC revisto.

Uma melhoria de desempenho é convincente quando os mesmos casos mantêm as rotas pretendidas e o trabalho inútil desaparece. Atalhos DIRECT amplos podem fazer desaparecer um atraso enquanto mudam o IP de saída.

Artigos relacionados