Ответ 1
HTTP - это протокол без учета состояния. Это означает, что по определению вы не можете знать на стороне клиента, что http -верб POST
преуспел или нет.
Существуют некоторые методы, которые веб-приложения используют для преодоления этой функции HTTP. Они включают.
- сеансы на стороне сервера
- файлы cookie
- скрытые переменные в форме
Однако, ни одна из них не поможет вам в решении проблемы. Когда я сталкивался с этими типами проблем в прошлом, они почти всегда являются результатом сервера, который слишком долго обрабатывает веб-запрос.
Есть действительно отличная цитата, что я прошу прощения в бессонные ночи:
"Веб-запрос - это страшное место, вы хотите быстро и быстро войти как вы можете" - Рик Брэнсон
Вы хотите получать и удалять свой веб-запрос в течение 100 - 500 мс. Вы встречаете эти цифры, и у вас будет веб-приложение, которое будет хорошо себя вести/хорошо играть с веб-серверами.
С этой целью Я бы посоветовал вам изучить, как долго длится ваш пост, и выяснить, как сократить эти запросы. Если вы делаете серьезную обработку на стороне сервера, прежде чем делать вставки dbms, вам следует рассмотреть возможность передачи их в какую-то систему задач/очередей.
Примером "серьезной обработки" может быть некоторая загрузка изображения, возможно, с некоторой обработкой изображений после загрузки. Примером решения задачи и очередности будет: RabbitMQ и Celery
Примерное решение вашей проблемы:
- вставьте часть ваших данных в dbms (или даже быстрее NoSQL)
- передать дорогостоящую обработку фоновой задаче.
- вернуться к пользователю/веб-клиенту. (даже в фоновом режиме задача все еще работает)
- прослушать окончательный ответ с помощью (опроса, потоковой передачи или веб-сайтов). Этот шаг не является тривиальной задачей, но конечный результат стоит того.
Затяните этот веб-запрос, и это будет редкий день, когда ваш клиент не получит ответ.
В тот редкий день, когда клиент не получает данные. Как предотвратить несколько сообщений... Я ничего не знаю о ваших данных. Тем не менее, есть некоторые связанные с схемой вещи, которые вы можете сделать, чтобы однозначно идентифицировать ваш пост. то есть выяснить на стороне сервера, если данные являются update
или create
.
Этот ответ охватывает некоторые из методов опроса/потоковой передачи/веб-макетов, которые вы можете использовать.