В старые времена CGI у нас было много форм, которые запускали различные внутренние действия. Например, текстовые уведомления для групп, задания на печать, сбор данных и т. Д.
Если пользователь находился на странице, которая говорила «Подождите ... Выполняется ОГРОМНАЯ работа, которая может занять некоторое время». У них было больше шансов нажать REFRESH, и это было бы ПЛОХО!
ЗАЧЕМ? Потому что это приведет к увеличению количества медленных работ и, в конечном итоге, все затормозит.
Решение? Позвольте им сделать свою форму. Когда они отправляют свою форму ... Начните свою работу, а затем направьте их на другую страницу, которая говорит им подождать.
Где страница посередине фактически содержала данные формы, необходимые для запуска работы. Страница WAIT, однако, содержит уничтожение истории javascript. Таким образом, они могут ПЕРЕЗАГРУЗИТЬ эту страницу ожидания сколько угодно, и это никогда не вызовет запуск исходного задания в фоновом режиме, поскольку эта страница WAIT содержит только данные формы, необходимые для самого WAIT.
Надеюсь, это имеет смысл.
Функция уничтожения истории также помешала им щелкнуть НАЗАД и затем обновить.
Это было очень безупречно и отлично работало в течение МНОГИХ лет, пока некоммерческая организация была свернута.
Пример: ЗАПИСЬ ФОРМЫ - Соберите всю их информацию, и при отправке это запускает вашу бэкэнд-работу.
RESPONSE from form entry - возвращает HTML, который выполняет перенаправление на вашу статическую страницу ожидания и / или POST / GET в другую форму (страницу WAIT).
WAIT PAGE - содержит только данные FORM, относящиеся к странице ожидания, а также javascript для уничтожения самой последней истории. Например (-1 ИЛИ -2), чтобы уничтожить только самые последние страницы, но все же позволяет им вернуться к исходной странице ввода FORM.
Оказавшись на вашей странице WAIT, они могут нажимать REFRESH столько, сколько захотят, и это никогда не вызовет исходное задание FORM на бэкэнде. Вместо этого ваша страница WAIT должна включать само обновление по времени META, чтобы она всегда могла проверить статус своей работы. Когда их работа будет завершена, они будут перенаправлены со страницы ожидания туда, куда вы хотите.
Если они делают REFRESH вручную ... Они просто добавляют туда еще одну проверку статуса своей работы.
Надеюсь, это поможет. Удачи.