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