Hi All,
After I upgrade nginx to 1.9.12 and enabled http2 for my website. I found a wired issue related with download pictures.
My website is a photo-sharing websites. So on each page there are about 100-200 pictures, the size of each of them may from 10K to 500K.
In the past (http and https with spdy), I'm using below settings:
client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 30;
send_timeout 30;
keepalive_requests 200;
keepalive_disable none;
reset_timedout_connection on;
And everything is good. For users from different countries, they can view the pictures without any error.
But after I upgrade to http2, with the same settings, it seems for users who have a good bandwidth, everything is fine. But for users who are from different countries, some of them experience issue that on the webpage some pictures can't display properly. And if they refresh the webpage for 1 times or more, then the whole webpage can display as normal, all pictures are downloaded and display.
I tried to change send_timeout value from 30s to 300s, then it seems it can fix the problem. I used firefox to monitor the webpage load speed, I can see for the pictures of the webpage, the waiting time is pretty long, sometimes it's more than 60s - 120s, and then firefox start to receiving the pictures.
My understanding is that after enable http2, nginx are using "Multiplexing and concurrency" to send out pictures, which mean for the webpage with 200 pictures, the web browser is ready to receive all pictures when the connections is established. But for clients who has limited network bandwidth to the server, they can only download the pictures slowly. And then some of the pictures will be timeout and can't display.
So, is there any better solution to fix this kind of issue?