Open DBotThePony opened 6 years ago
Also there can be "Upvotes/Downvotes" download model. As we are going on downloading files, we can conclude whenever to or not to increase download channels.
"Upvotes" are:
"Downvotes" are:
The more "upvotes" we got, the more channels we create. "Downvotes" decrease amount of channels we need to keep open. We should start with 4 channels open.
And after second throught, sv_downloadurl_connections
seems to be a bit useless for me now, since http web server gonna deliver only static files, and it should not experience any load problems with amount of channels. And, in fact, fastdl web server should be already capable of handling large amount of traffic.
Almost 5 years after, I consider the idea of separate convars to control "download streams/channel" generally bad and HTTP/2 capable download client be the only solution to problem of RTT/TTFB.
Why? Because manual pipelining create issues, ranging from flow control problems and channel overload down to no sane way to control server load from HTTP's webserver perspective.
What should be done is implementing fully capable HTTP/2 downloader, and leaving HTTP/1.1 downloader logic as-is.
HTTP/2 has advantages with no downsides of manual HTTP/1.1 pipelining:
sv_downloadurl
to point at HTTP/2 capable server);
As of 2023, Issues below are still relevant, but solutions are not, please refer to my new comment below.
So, if no one decide to write this feature request, i will do it by myself.
Currently, we got very rough and incompetent FastDL system avaliable (for downloading files from HTTP(S) server). Sure, using HTTP web server is good, and it really improve speed, but only when compared to internal gameserver download mechanism, but, however, our download speed is still low (even on LAN connection!) Why is it currently so bad? There are several reasons:
find . -type f -exec bzip2 -v {} +
exists, on most game servers we get only maps compressed, this creates extra latency because client request bzipped files fist (which return 404 by web server), and then it starts to actually download files.So what's the deal with all these paragraphs? In my design we could do next things:
Q: Why do we need sv_downloadurl_connections? A: Because im pretty sure some of server hosters would want to not overload their FastDL web servers (or, even tell server's owner that he can increase this value to whatever he would like with explanation).
This request is really my dream since 2013, and im not sure if this dream would come true or not. But if this would come true, all server owners will have much more abilities to create truly creative content and servers, since we would get much more reliability on builtin download system for variety of servers.