On Jun 24, 2:52 am, "T.J. Crowder" <t...@crowdersoftware.com> wrote:
> Hi,
>
> > I noticed I had debugging
> > turned on and this made IIS single threaded.
>
> Ah, you're using IIS.  Are you using session variables by any chance?
> IIS may be serializing access to the session (e.g., queuing up any
> further requests).  When you were testing simultaneous access from
> other windows, did you make sure to be in the same session?
>
> There there's app pools.  Your app pool may be configured to only
> process a single request at a time.  IIS has lots of settings around
> this stuff, many of which seem to me to have somewhat odd
> defaults... :-)  (But actually, if you were doing things with the same
> app in a different window successfully, it wouldn't be app pools,
> never mind.)
>
> > Based on your response, it sound like this is the way Ajax is supposed
> > to work.
>
> No, it's nothing to do with Ajax itself.  It's all down to whether the
> browser or server is queuing up requests, or whether the thread is
> tied up (JavaScript is single-threaded in this context).  So for
> instance, you can tie up the thread by doing a synchronous request
> (asynchronous: false in the options).  That brings that browser window
> (at least) to a screeching halt until that request is completed, and
> with some browsers, it's all windows, not just the one.  So...don't do
> synchronous requests (not that you are, in your code example you're
> using asynchronous: true -- which is the default, you can leave it out
> if you like).
>
> This issue of multiple concurrent requests has come up a couple of
> times lately in the forum, including a thread in which Safari seemed
> (to the poster) to be only allowing *one* request at a time to the
> same server (his issue involved a file upload, though, which may be
> special).  So I thought I'd create a contained test to double-check
> things[1].  My test has two HTML files and a JSP (since I'm a Java
> guy), but the JSP is trivial, you can easily replace it with a PHP or
> VB.Net equivalent.  It just ensures that it takes a least a given
> amount of time before returning (in a way that I would _never_ put on
> a live system).
>
> So if you load up longtest1.html and click the "Long Request" button,
> it starts a five-second request.  Then while that's running, you can
> use the "Short Request" button to try a short Ajax request running
> concurrently with the long-running one, or use the link to move to
> longtest2.html in the same window.
>
> In my tests with the JSP running on Tomcat, all of the browsers I
> tried behaved exactly as I would expect:  I could do the short request
> while waiting for the long request to finish, and I could use a link
> to go to another page without waiting for the long request to finish.
> This is expected behavior because I never try to do more than two
> requests to the server at the same time.  I tried FF3, IE6, IE7, IE8,
> Safari 3 for Windows, Opera 9, and Chrome 2.
>
> So what does that tell us?  I think it tells us that the problem
> you're hitting is probably IIS configuration, but double-check you're
> not doing synchronous requests or more than two simultaneous requests.
>
> [1]http://pastie.org/522706
>
> Hope this helps,
> --
> T.J. Crowder
> tj / crowder software / com
> Independent Software Engineer, consulting services available
>


Thanks for creating that example. Using it, I was able to create a
similar application that runs under IIS using .asp pages. I created a
page delay.asp that took the place of delay.jsp which just delays 5
seconds:

Delay.asp
<%@ LANGUAGE="VBSCRIPT" %>

<%

Dim PauseTime, Start
PauseTime = 5
Start = Timer ' Set start time.
Do While Timer < Start + PauseTime
Loop

Response.write "finished"
%>

I found that if you redirect to an html file, there is never a
problem. If you redirect to an .ASP page, it will block if you are
using session variables. If you turn them off, then the redirection is
allowed to happen immediately, so your suspicion about session
variables was correct.

Unfortunately, my application depends heavily on session variables so
turning them off is not an option at this point. Is there anyone else
out there who has used classic .ASP pages and prototype.js to create
AJAX pages? I tried changing the app pool worker threads = 2, but this
didn't seem to do anything. I am using IIS6.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to