Improving upload reliability with aborted detection
While most of our uploads successfully complete their journey across the world wide web, sometimes one can get lost along the way.
That is because the web is a dangerous place, so to speak, and things frequently get lost between routers and ISPs. This then leads to those connections timing out. Of course, some people are also simply unlucky with the uplink speed of their home connection, which can result in them closing the browser tab impatiently.
We try to help with the latter by providing upload progress information across all browsers, so that folks can estimate the required time, and do something else in the meantime. This seems to work pretty well. So far, only 1.7% of our uploads timed out or were aborted.
However, up until now, we were unable to detect at which point an upload goes stale, and that meant
we kept showing the 'ASSEMBLY_UPLOADING'
status forever. That was obviously not ideal, so we
finally decided to do a little work on our
handcrafted upload parser. As a result, we are now
able to detect those unfortunate uploads and mark them as 'REQUEST_ABORTED'
.
Going forward, we will also detect the difference between uploads timing out, and people closing their browser tabs. However, for that to be possible, we need to land a patch in the Node.js core first.
Lastly, we also marked all previously stalled uploads as 'REQUEST_ABORTED'
on our website.
Enjoy!
Update: Since the writing of this post, Transloadit has developed and released tus, an open protocol for resumable file uploads. We are planning to fully integrate tus into the Transloadit service as soon as possible, making aborted uploads entirely a thing of the past.