状态栏显示“Resolving Host in Proxy Script”,但更换代理服务器几乎没有区别。这是一条有用的线索:浏览器可能仍在决定把请求发往哪里。

PAC 文件可以执行依赖 DNS 的检查。如果这些检查在等待无法访问的解析器,或反复询问不必要的问题,页面加载可能在所选代理收到任何内容之前就停顿了。

1. 确定停顿发生在哪一步

针对一个受影响的 URL,判断延迟发生在获取 PAC 文件、评估 PAC 文件,还是连接返回的代理时。代理访问日志为空与最初两个阶段相符;它并不能证明浏览器走了直连路径。

然后检查哪些规则需要 DNS。Microsoft 的 PAC 性能指南 建议避免不必要的 DNS 相关工作。主机名相等性检查并不需要像解析该主机名并检查子网那样的信息。

2. 去掉不必要的 DNS 工作

已知的主机名例外通常可以在宽泛的基于地址的检查之前判定。只有当剩余策略确实需要其地址时才解析名称。如果后续多个条件需要同一个值,就把结果保存在局部变量中。

不要通过在顶部添加无条件的 DIRECT 返回来“修复”缓慢的脚本。那样会连同延迟一起去掉路由决策。

针对特定机器的 DNS 变通办法需要证据。启用文件共享或重写每台笔记本电脑的 hosts 文件,并不是应对缓慢路由脚本的好办法。在受影响的网络上检查解析器和主机名行为,尤其是在网络变更之后,并且只在 PAC 的实际决策路径需要时才修改它。

相关文章