如何将 HTTP 响应延迟 x 秒?

发布于 2024-12-09 03:26:45 字数 614 浏览 0 评论 0原文

我不会详细解释为什么我需要这个,它是内部分析包的一部分,但我的目标是创建一个 2 秒后返回重定向的 ASP.NET 页面。

我看到的问题是使用 Thread.Sleep(2000); 会占用我的 ASP.NET ThreadPool 线程之一。据我了解,这是相当浪费的,因为线程创建并不便宜,而且我需要该服务器来处理尽可能多的并发连接。

那么,让 HTTP GET 在至少 2 秒后返回我的页面的最佳方法是什么(超过 2 秒没问题,只是不能低于)。

    protected void Page_Load(object sender, EventArgs e)
    {
        Thread.Sleep(2000);
        Response.Redirect(RedirectUri);
    }

编辑

我应该澄清一下,请求的页面实际上是作为图像请求的,因此不可能返回 HTML。它将像这样使用:

    <img src="http://hostname/record.aspx"/>

重定向到实际图像应该需要 2 秒。

I won't go into the boring details of why I need this, it's part of an internal analytics package, but my goal is to create an ASP.NET page that returns a redirect after 2 seconds.

The problem I'm seeing is that using Thread.Sleep(2000); is going to hold up one of my ASP.NET ThreadPool threads. As I understand it, this is pretty wasteful as thread creation isn't cheap and I need this server to handle as many possible simultaneous connections as possible.

So, what's the best way to have HTTP GETs to my page return after at least 2 seconds (over 2 seconds is no problem, it just can't be under).

    protected void Page_Load(object sender, EventArgs e)
    {
        Thread.Sleep(2000);
        Response.Redirect(RedirectUri);
    }

EDIT

I should clarify, the requested page is actually requested as an image, so returning HTML isn't possible. It'll be used like so:

    <img src="http://hostname/record.aspx"/>

The redirect to an actual image should take 2 seconds.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

桃酥萝莉 2024-12-16 03:26:46

您可以实现IHttpAsyncHandler。请参阅 MSDN

You could implement IHttpAsyncHandler. See MSDN.

枕梦 2024-12-16 03:26:46

用JS来做:

setTimeout(function() {
   $.ajax({url: './script.aspx'});
},2000);

Do it in JS:

setTimeout(function() {
   $.ajax({url: './script.aspx'});
},2000);
愿得七秒忆 2024-12-16 03:26:46

没有简单的方法可以在不占用线程的情况下延迟程序执行。理论上,您可以在发生重定向的另一台服务器上设置延迟,但如果您只是试图在重定向之前造成延迟或超时,则必须付出等待线程的代价。

There is no way simple way to delay program execution without holding up a thread. You could in theory set up a a delay at the other server where the Re-Direct is occurring, but if you are just trying to cause a delay or timeout prior to the Redirect, you'll have to pay the penalty of a waiting thread.

醉梦枕江山 2024-12-16 03:26:45

您可以在标记本身上执行此操作,您可以放置​​如下内容:

<head>
   <meta http-equiv="refresh" content="3; URL=otherpage.aspx">
</head>

You can do this on the markup itself, you can put something like:

<head>
   <meta http-equiv="refresh" content="3; URL=otherpage.aspx">
</head>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文