🔗 使用 proxy.pac 自动配置文件时出现浏览器速度/锁定问题
🔗 摘要
“proxy.pac”自动配置文件通常用于在特定条件下配置 Web 浏览器使用 Web 代理。可能会出现各种问题,导致 Web 浏览器在尝试解析似乎仅在使用自动配置文件时才会出现的未知域名时,显得缓慢或无响应。
🔗 症状
- 访问正常站点速度很快;访问未知站点会导致浏览器锁定超过几秒钟;
- 从浏览器配置中删除代理自动配置文件可解决问题;或
- 直接配置代理可解决问题
🔗 解释
proxy.pac 文件中有多种 JavaScript 文件可供使用。一个常用的函数是 isInNet(),它接受主机名、IP、网络掩码,如果主机 IP 在给定的网络/网络掩码范围内,则返回 true。
这要求浏览器在尝试匹配之前执行 DNS 查找,以将给定主机映射到 IP 地址。
一些浏览器会对每个 isInNet() 函数调用执行单独的 DNS 查找,导致在最终完成代理查找之前出现很长的延迟。这会导致 Web 浏览缓慢或无法使用。
🔗 规避方法
提供了一个 JavaScript 函数来检查给定主机是否可解析。例如
if (! isResolvable(host)) {
return "PROXY proxy.example.com:3128";
}
将强制将不可解析的名称立即转发到代理。
应在任何需要执行 DNS 查找的 JavaScript 函数(如
isInNet())之前包含此内容。
🔗 致谢
感谢 Brian Riffle <riffle AT klamathcc DOT edu> 报告此问题并成功应用了建议的修复,以及 David Gameau <David.Gameau AT unisa DOT edu DOT au> 识别了该问题并提出了变通方案。
类别: 知识库
导航: 站点搜索、站点页面、类别、🔼 向上