문제

웹 페이지의 새로 고침과 관련하여 누군가가 내가 가진 근본적인 질문에 대답 할 수 있다면 기대하고있었습니다.

사용자가 일부 세부 정보를 채우고 클릭 제출을하는 Dotnet 웹 형태가 있습니다. 웹 페이지 뒤의 코드에는 약 20 개의 기능이 수행됩니다.

이제 사용자가 제출 버튼을 클릭하면 웹 페이지가 5 번째 기능을 실행하고 사용자가 브라우저를 새로 고침합니다.

이미 처리 페이지는 어떻게됩니까? 페이지가 즉시 종료됩니까? 아니면 20 번째 기능을 실행할 때까지 실행할 수 있습니까? 아니면 실행중인 페이지가 파괴되고 새 페이지가 작성되어 클라이언트로 전송됩니까?

답변 해주셔서 감사합니다.

도움이 되었습니까?

해결책

브라우저에서 서버에 요청이 이루어지면 페이지가 처리됩니다. 사용자가 요청을 취소하거나 중지하더라도 서버는 계속 요청을 처리합니다. 사용자가 페이지를 다시로드/새로 고침하면 첫 번째 요청과 병렬로 실행되는 또 다른 요청입니다.

PHP의 경우에도 서버는 사용자가 중단했습니다 연결. 서버는 요청 결과를 반환하려고 시도 할 때 중단 된 것을 알고 있습니다.

인터넷은 분리 된 환경입니다. 서버는 브라우저에 대해 아무것도 모릅니다. 서버가 아는 유일한 것은 요청이 이루어졌으며 요청을 채워야한다는 것입니다.

다른 팁

브라우저에서 페이지가 새로 고침되면 브라우저는 서버에서 페이지와 해당 구성 요소의 새로운 사본 (CSS, JS 등)을 요청합니다.

페이지가 게시 된 호출 인 경우 브라우저는 데이터를 다시 게시합니다.

페이지가로드되었습니다.

완전히로드되면 서버 측의 실행을 완료해야합니다 (추가 프로세스를 실행하거나 더 이상 데이터를 클라이언트에 보내지 않는 배경 코드를 실행하지 않는 한).

페이지가 반쯤로드됩니다.

현재 페이지의 연결은 즉시 연결이 끊어집니다. 페이지가 여전히로드중인 경우. 페이지가 계속 실행되는지 또는 종료 될지 여부는 서버에 따라 다릅니다. 예를 들어 PHP에서는 페이지가로드를 통해 중간에 종료 된 경우에도 스크립트를 계속 실행하기 위해 incor_user_abort ()를 inclue습니다.

서버가 ASP이고 ASP 버튼을 클릭하면 사용자가 반쯤 새로 고침 되더라도 버튼의 조치 (메소드)가 서버 측에서 완전히 완료됩니다. 이것이 ASP.NET 프레임 워크가 수행되는 방식입니다.

간단히 말해서, 사용자가보고있는 페이지는 세션 중이 아니라면 다시 선택할 수 없습니다. 그러나 서버는 사용자가 연결이 끊어 졌다는 것을 알지 못하므로 응용 프로그램에 세션 / 타임 아웃이없는 한 애플리케이션이 계속 실행됩니다. 심지어 세션이 완료되지 않은 경우에도 이상합니다.

도움이 되었기를 바랍니다.

답장

코드 실행이 계속 될 것입니다.

웹 페이지 (물론 클라이언트 측면에서)가 단일 스레드. "onsubmit"이 기능의 흔적을 호출한다면, 그것은 당신에게 달려 있지만 어느 시점에서 당신은 (아마도) 제출하다() 양식.

다시 말해 (특정 경우), 모든 기능 트레일은 양식이 전송 될 때까지 계속됩니다.

반면에 "Reload"버튼을 누르면 실행이 종료.

모든 기능이 실행되며 새로 고침이 있더라도 테스트를 수행 할 수 있습니다. 그러나 .NET에서 클라이언트가 여전히 서버와 연결되어 있는지 확인하는 기능을 제공합니다 (첫 번째 제출의 경우 서버가 제출 후 언제든지 클라이언트가 응답을 기다리는지 확인할 수 있음을 의미합니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top