In the last days of CGI, we had many forms that could trigger various backend actions. For example, text notifications for groups, print jobs, data fermentation, etc.
If the user was on a page that said, "Please wait ... Doing some HUGE work, which may take some time." They most likely got into REFRESH, and that would be FREE!
Why? Because it will lead to slower work and, ultimately, link it all.
Decision? Let them make their shape. When they submit their form ... Launch your work and then forward it to another page that will keep them waiting.
If the page in the middle actually contained the form data needed to run the job. The WAIT page, however, contains a history of javascript destruction. So they can RELOAD that wait for the page is all they want, and will never run the original job in the background, because this WAIT page contains only the form data needed by WAIT itself.
Hope this makes sense.
The history erase feature also prevented them from pressing BACK and then updating.
It was very smooth and worked great for many MANY years until the nonprofit activity was wounded.
Example: FORM ENTRY - collect all your information and when it is sent, this starts your back work.
RESPONSE FROM LOG IN TO FORM - returns HTML that redirects to your static wait page and / or POST / GET to another form (WAIT page).
WAIT PAGE - contains only FORM data related to the wait page, as well as javascript to destroy the most recent history. Like (-1 OR -2) to destroy only the very last pages, but still allows them to return to the original FORM login page.
As soon as they appear on your WAIT page, they can click REFRESH as much as they want, and this will never cause the original FORM to work on the backend. Instead, your WAIT page should include a timely META update so that it can always check the status of its work. When their work is completed, they will be redirected from the wait page to whatever you wish.
If they do REFRESH manually ... They just add another check of the status of their work there.
Hope this helps. Good luck.