开发者

How can I delay an HTTP response for x seconds?

开发者 https://www.devze.com 2023-04-12 15:02 出处:网络
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.

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)开发者_如何学Python; 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.


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

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


You could implement IHttpAsyncHandler. See MSDN.


Do it in JS:

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


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号