You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多次执行Invoke-WebRequest速度异常缓慢问题求助

Invoke-WebRequest重复执行变慢的原因及解决办法

可能的原因

  • ISE会话资源泄漏:首次运行请求后,PowerShell ISE的会话中可能残留了未正确释放的网络连接资源(比如HTTP连接池中的连接未回收)。后续请求复用这些资源时出现阻塞,导致速度骤降。重启ISE会重置整个会话环境,释放所有占用的资源,因此问题消失。
  • 会话级状态残留:即使使用了-UseBasicParsing,PowerShell的Web请求模块可能在当前会话中保留了DNS缓存、Cookie或其他会话状态数据。这些残留数据会干扰后续请求的处理流程,引发性能问题,重启ISE则会清空所有会话状态。
  • 后台异步操作未完成:首次请求看似返回了输出,但后台可能还有未完成的异步处理任务(比如资源下载、连接清理),这些任务占用了会话的网络资源,导致后续请求被阻塞。重启ISE直接终止了这些后台任务,恢复了正常的请求速度。

解决办法

  • 手动释放响应资源:每次请求完成后,调用响应对象的Dispose()方法,避免资源泄漏:
    $timer = [Diagnostics.Stopwatch]::StartNew()
    $ProgressPreference = 'SilentlyContinue'
    try {
        $resp = Invoke-WebRequest -uri 'https://www.canada.ca/en/immigration-refugees-citizenship/news/2023/07/minister-fraser-to-make-an-important-announcement.html' -UseBasicParsing
    } finally {
        $ProgressPreference = 'Continue'
        if ($resp) { $resp.Dispose() }
    }
    $timer.Stop()
    $timer
    
  • 重置会话环境:如果需要重复执行请求,每次运行前关闭当前ISE窗口并重新打开,或者使用ISE的新标签页运行代码,避免会话资源累积。
  • 替换请求命令:尝试用Invoke-RestMethod代替Invoke-WebRequest,两者底层实现不同,可能避开会话级的资源问题。

内容的提问来源于stack exchange,提问作者Marc Codere Dussault

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 11:55:15