Large download blocks all other requests

I recently released a website for a platformer game called Marble Blast that allows users to download large packs of levels for the game. The issue I have is that whenever a file is downloading, all other requests don’t seem to come through until the download either finishes or is cancelled.

Maybe this extends beyond downloads and to all requests, meaning that no two requests can finish in parallel.

You can see this happening by going to Search - Marbleland, then clicking the “Download all matching levels” button and while the download is happening try navigating around the page. For me, it doesn’t work until the download stops.

The backend stack I’m using is Cloudflare proxied DNS, then NGINX acting as a reverse proxy to my Node.js express server. This is the NGINX config:

server {
    listen 80;
    listen [::]:80;

    server_name marbleland.vani.ga;
    client_max_body_size 20m;

    location / {
        proxy_pass "http://localhost:20020/";
    }
}

I tried connecting to the Express server directly and this problem doesn’t appear.

Exactly. When I connect to the Express server directly, or I connect to the NGINX server directly (without Cloudflare), this problem doesn’t appear.

Also, another clue: When I try this with throttled network (set in Chrome devtools), it suddenly works.

Just to confirm, is this blocking requests from the same browser or from other browsers?

Only same browser, it doesn’t block anybody else or different browsers on the same machine.

Does anybody have any idea how I could even debug this? Is this really such a rare issue? All I’m doing is Cloudflare into NGINX into proxy_pass.

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.