Closed Bug 170668 Opened 22 years ago Closed 9 years ago

Status bar should show other message while waiting for available connection

Categories

(Core :: Networking: HTTP, enhancement)

enhancement
Not set
normal

Tracking

()

RESOLVED WONTFIX

People

(Reporter: andrixnet, Unassigned)

Details

Maximum concurrent connections are limited (by an option in prefs.js I think). If there are 8 browser windows downloading something large (an image), a 9th window if told to request a page will behave as follows: Mozilla icon (top right) will animate. Cursor will be arrow and hourglass Statusbar shows "Done". When a connection becomes available for this window to use, the status bar will change to "Sending request..." The status bar message while waiting for available connection is wrong. Document loading is not done, it hasn't even started yet. It should show a sensible message that tells the user what Mozilla is actually doing.
right, this needs to be fixed. ideally it would be nice to give the new request highest priority, perhaps we could even suspend one of the other loads if the server supports byte-range requests and start on the new high priority load right away. this would probably be the most ideal solution. otherwise, we could try to come up with some sort of status message that would perhaps make sense to users.
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
OS: Windows 95 → All
Hardware: PC → All
Target Milestone: --- → mozilla1.3alpha
Summary: Status bar should show other emssage while waiting for available connection → Status bar should show other message while waiting for available connection
I woulddefinitely not want a page left to load in the background to stall when I make a new window and a new request. In many cases, the reason why I open a new window is that I want to leave a page downloading in the background while I look for more info at the same time. Expanding this concept, the 8 connections limit can be easily reached. The current behaviour as I see it seem to be first come first serve when awaiting for new connections to be available is ok.
perhaps, but doesn't it seem logical to give higher priority to what the user is viewing? IMO we should try to better share the available bandwidth without overloading servers. that may mean suspending a background load until foreground items finish loading, or it may mean something else. but, given the limitations of HTTP, i'm not sure what that something else might be.
If it were like described in comment #3, what would be the purpose of multitasking and having processes run in the background? What would be the purpose to even have multiple browser windows or tabs at all? If foregrounds cuts off everything else!
i wasn't suggesting that multitasking would be defeated by this. indeed quite the contrary. my suggestion was just to put on hold those things happening in the background if it happens that those things prevent the current, visible page from being loaded at all. of course, if both can load simultaneously that is best, but there are real limits to how many connections we can have open at a time, so we must multiplex over those connections. that may mean suspending a background load until the foreground load finishes. afterwards, the background load can be continued right where it left off without the user noticing anything but a delay in loading the background page. how can this be a bad thing?
Like having x processes working at priority Normal, and when you start a new one, the other automatically are assigned priority Idle? It's not fair. What if I have 8 (current limit) of downloads and I open the 9th page, and then continue opening new pages until I arrive at 15? What if I get at 16 and more? What then? pause all other connections because the page I have displayed last has many images in it? What I said in the previous message pops up right away. I my case this scenario is quite close to the normal everyday use. Suspending background loads is CONTRARY to the very concept of background loads. While those pages load in the background, I am doing something else -> more efficiency. I am looking for more info, I may open new windows to look for other info. Just as the data transfer through TCP/IP goes through my link multiplexed for each thread that I have loading. I know it slows down, but having a thread pause in the background is the last thing I would want it to do. What if the page I have in fg. pauses others, but I change focus to one of those paused pages, what then? it will resume and pause the one that cause it to pause? Confusion, confusion, confusion. Single thread tasking (ok, multiplied by 8 but still...)? No, thank you, I would rather go back to the old DOS instead.
dude! your missing the point. if a background load is hogging all the connections to a server, then you can't open a new window to look for other information on the same server. that's the state of things today. i'm not suggesting suspending background loads just because they are in the background. i'm only saying that if a foreground load needs to talk to a server that is already being hit heavily by a background load, then it makes sense to suspend that background load so the foreground load can proceed.
On the other hand, what makes you think that new windows must definitely hit the same server? What if I do a google search and open 20 hits in rapid succession in new windows or tabs. They will hit a large variety of servers. And if I can afford the bandwidth, I get limited by the browser? How do you propose to pause? send a rst and then resume by making a new connection and asking a byte range? Again, if I constantly switch between open browser windows, then connections will pause and resume as each window gets focus? This may put a lot of additional load on the network with the packets needed to do so. If the solution proposed is that above, it will put a lot of needless traffic onto the network. Or another way: stop sending ack's? If you are behind a proxy, after some part of the download has already arrived, the proxy will finish the download anyway, regardless of what the user does, so again, the server will still be under large load, regardless of what mozilla does. If someone plan to play this pause strategy with connections, PLEASE make it configurable so the user can turn it off. It will definitely be the first thing I will do, and continue to consider it a bad idea.
the limit on the number of different websites is much higher. the max number of simultaneous connections is 24 (unless you are connecting via a proxy server in which case it is much lower).
The limit you are talking about should definitely not depend on wheather one uses a proxy or not. If the proxy whishes to impose no. of active connections, it should do so itself.
would be nice, but that's unfortunately not the way proxy servers work. gecko is supposed to limit the number of connections to a proxy server to avoid congestion / overloading the proxy server. opening many connections may seem like a good thing from the perspective of the user, but if everyone's webbrowser opened an unlimited number of connections, the internet would buckle under the load, making performance much much worse for a single user.
With squid I can limit the number of simultaneous tcp connections a client makes with the proxy and returns a denied page if more are open.
yes, and wouldn't it be fun if several million browsers all tried to open up an additional connection to your proxy server ;-) seriously though... consider the ISPs out there. they depend on the hard limit imposed by not only existing browser implementations but also recommendations made in RFC 2616. this is asking for trouble.
It still isn't fair that using a proxy the number of connections regardless of destination, should be the same as the limit for connections to a single destination. And secondly, if these limits are configurable (prefs or at least in the *.js files and documented), i will drop my objections. I mean : max conn. limit same site max conn. limit any site max conn. limit using a proxy (same site, any site) new connection strategy: first come - first serve, priority to foreground when new connections available, pause/halt for later resume other connections so that foreground may download. I will definitely modify these. Second, excluding all other possible issues, I still have much better performance navigating with Netscape 4.75 and even better with Netscape 3 in my usual pattern of browsing, which is 10-30 open windows and at least half of them loading something.
they are all prefs... search all.js for network.http.* ... and make whatever changes you like to your own prefs.js :)
#8 - Not all proxy servers complete a download if the client cancels the connection. The limitation of total connections to a proxy is prudent, not all proxies have connection limit checks in their code. Some proxy farms are highly distributed and would not be able to tell if you opened too many connections.
Thanks for the prefs suggestion. Though not related, but in the line of the discussion here : I know Netscape 4.7 when loading a page with many images and that spans over several screen size pages (pagedn several times to end of document). When in loads the images in this page, it favours for new connections (only) the images that are in the currently visible part of the document. How does mozilla consider this (if at all) since I haven't been able to determine it yet.
mozilla's transaction queue is first-in, first-out. in other words, subsequent page loads (and images) get lowest priority.
Severity: trivial → enhancement
Priority: -- → P5
Target Milestone: mozilla1.3alpha → Future
-> default owner
Assignee: darin → nobody
Status: ASSIGNED → NEW
Target Milestone: Future → ---
h2
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.