Что происходит, когда мы обновляем веб-страницу? - PullRequest
19 голосов
/ 27 октября 2009

Я надеялся, что кто-нибудь сможет ответить на фундаментальный вопрос, который у меня есть в отношении обновления веб-страницы.

У меня есть веб-форма dotnet, где пользователь вводит некоторые данные и нажимает кнопку "Отправить". Код позади веб-страницы имеет около 20 функций для выполнения.

Теперь предположим, что когда пользователь нажимает кнопку отправки, веб-страница выполняет 5-ю функцию, а пользователь обновляет свой браузер;

Что будет с уже обрабатываемой страницей? Будет ли страница немедленно закрыта? или ему будет разрешено работать, пока он не выполнит 20-ю функцию? или работающая страница будет уничтожена, а новая страница будет создана и отправлена ​​клиенту?

Спасибо за ваши ответы.

Ответы [ 6 ]

15 голосов
/ 27 октября 2009

После отправки запроса на сервер из браузера страница обрабатывается. Даже если пользователь отменяет или останавливает запрос, сервер продолжает обрабатывать запрос. Если пользователь перезагружает / обновляет страницу, это еще один запрос, который будет выполнен параллельно с первым запросом.

Даже в случае PHP сервер не проверяет, активно ли пользователь прервал соединение. Сервер знает, что он был прерван, когда он пытается вернуть результаты запроса.

Интернет - это отключенная среда. Сервер ничего не знает о браузере. Единственное, что знает сервер, это то, что был сделан запрос, и он должен заполнить запрос.

2 голосов
/ 27 октября 2009

Когда страница обновляется в браузере, браузер вызывает на сервере свежую копию страницы и ее компонентов (CSS, JS и т. Д., Если они не кэшированы).

Если страница была вызовом POST, браузер снова отправит данные POST.

Страница загружена:

При полной загрузке выполнение на стороне сервера должно быть завершено (если вы не выполните дополнительные процессы или не выполните фоновый код, который больше не будет отправлять данные клиенту).

Страница загружается на полпути:

Соединение для текущей страницы будет немедленно разорвано - , если страница все еще загружается . Это зависит от сервера, будет ли страница продолжать работать или завершиться. Например, в PHP мы можем ignore_user_abort (), чтобы скрипт продолжал работать, даже если страница была завершена в середине загрузки.

Если ваш сервер ASP, и вы нажимаете на кнопку ASP, действие (метод) кнопки будет выполнено полностью на стороне сервера, даже если пользователь обновится на полпути. Вот как работает ASP.NET Framework.

0 голосов
/ 27 октября 2009

все функции будут выполнены, даже если у вас есть обновление, вы можете сделать тест. но в .net он предоставляет функцию для проверки того, что клиент все еще подключен к серверу (для вашего первого представления, сервер может проверить, ожидает ли клиент ответа в любое время после отправки)

0 голосов
/ 27 октября 2009

Я считаю, что веб-страница (на стороне клиента, конечно) выполняется в единственном потоке . Если ваш «onsubmit» вызывает множество функций, это ваше дело, но в какой-то момент вы (возможно) захотите отправить () форму.

Другими словами (в вашем конкретном случае), весь функциональный журнал будет продолжаться до отправки формы.

С другой стороны, если вы нажмете кнопку «перезагрузить», выполнение будет прекращено .

0 голосов
/ 27 октября 2009

Выполнение кода будет продолжаться до конца.

0 голосов
/ 27 октября 2009

Проще говоря, страница, которую видит пользователь, теряется, если только во время сеанса они не смогут снова ее забрать. Но сервер не знает, что пользователь отключился, поэтому приложение продолжит работу, если в приложении не будет сеанса / тайм-аута, даже тогда было бы странно, если бы сеанс не завершился.

Надеюсь, это поможет.

RE

...