Summarizing your question
- Your website generates a file (size varies) for the users
- The backend takes time to generate that file
- Once the file is generated, the user downloads it
I have a few questions:
- Is it mandatory for the user to check/view the generated file before downloading it?
- Is there a reason why the user has to wait on the same site?
- Is it a file the user has to look at, as it gets generated?
Scenario 1: The user has to wait on the same site and check the file as it gets generated. Example: Online 3D renders where the user has to cancel the generation if he/she finds something going wrong
In this case,
- Status should be provided like mentioned by Devin.
- Other action elements on the website should be inactive
- A witty engaging message requesting the user not to refresh, and the reason why they should not refresh, should be displayed
- Mention estimated time to complete if possible. This will set the expectation for the user.
Other elements that can be added, if they don't further slow down the process:
An auto scrolling gallery of relevant pics or user testimonials to keep the user engaged
Another trend these days are to provide 8bit or 16bit games for the users to play. This is followed in a few websites and games. A small game keeps the users engaged when something big loads in the background. Namco, the video game developer, even has a patent on this.
Scenario 2: The user does not have to wait on the site and he can check the file after it is done. Example: Converting pdf to doc online
In this case,
- Get the mail id of the user
- Let them know the file is getting generated in the backend
- Let them know a link to the completed file will be mailed to them within a specific time
This is a WIN-WIN situation. You don't have to worry about the process overload if users refresh the page. The users don't have to worry about the time they have to spend on the site.
There are a lot of sites that do this. Here is an example
The solution depends on the questions I had asked at first. Please let me know if I have assumed something wrong. Thanks