질문:
웹 양식에 컨트롤이 있습니다. 이 컨트롤은 데이터베이스에 실시간으로 액세스하는 것이 가장 좋습니다. 데이터베이스에 변경 사항이 있으면 데이터가 클라이언트에 제출되고 최신 데이터가 표시됩니다.
분석하다:
클라이언트를 업데이트해야 하기 때문에 js의 프런트엔드 시계 기능을 사용해야 합니다. 서버가 변경되었으며 데이터를 업데이트하려면 클라이언트를 새로 고쳐야 합니다. 페이지를 새로 고치지 않거나 잘못 새로 고치려면 어떻게 해야 합니까? 즉, 클라이언트에는 기본적으로 새로 고침 없음이 표시됩니다.
해결책: (실수한 부분이 있으면 정정해 주세요. 레벨이 제한되어 있습니다. 감사합니다.)
두 가지 주요 솔루션이 있습니다: 실시간 및 폴링
실시간: 데이터베이스에 트리거를 추가한 후 서버에 파일을 작성하여 세마포로 사용하여 트리거합니다. 이 기술은 이 문제에 비해 너무 복잡해서 계속 연구하지 않았습니다. 관심 있는 친구는 MSDN에 가서 볼 수 있지만 실제로 실시간으로 데이터를 업데이트할 수 있으므로 실시간으로 가장 효과적입니다. 대화.
폴링: 1. xmlhttp no 새로 고침 방법을 사용합니다. 이 방법에 대해서는 제가 앞서 전달한 다른 사람들의 글을 읽어보면 자세히 소개되어 있습니다. 그러나 테스트한 결과 서버에서 얻은 것은 전체 페이지의 HTML 코드라는 것을 알게 되었습니다. 필요한 제어 콘텐츠를 가져오고 반복하세요. 구성은 여전히 너무 복잡하고 반드시 효율적이지는 않습니다.
2. 제가 주로 쓰는 방법인 HTML 프레임워크를 사용하여 완성합니다. 이 방법은 간단하고 구현하기 쉬우며 작은 데이터만 동적으로 표시되는 상황에서는 매우 유용하다고 생각합니다.
자세한 소개: HTML을 업데이트해야 하는 곳에 iframe src="../test/WebForm2.aspx"를 작성합니다. Src는 연결할 페이지이고 필요에 따라 프레임과 스크롤 막대의 크기를 조정합니다.
프레임 연결 페이지로 새 페이지 WebForm2.aspx를 생성하고 이 페이지에 실시간으로 업데이트해야 하는 컨트롤을 넣은 다음 Page_Load 이벤트에 넣습니다.
Private Sub Page_Load(ByVal 발신자 As System.Object, ByVal e As System.EventArgs)가 MyBase.Load를 처리합니다.
'여기에 데이터베이스 업데이트를 가져오는 코드를 배치하고 이를 컨트롤과 연결합니다. End Sub
그런 다음 HTML에 메타 HTTP-EQUIV="Refresh" content="1" URL="/test/WebForm2.aspx"를 추가합니다.
이는 이 페이지가 1초마다 자동으로 새로 고쳐져(실제 상황에 따라 window.setInterval(function,1000)과 같은 전경 시계를 추가할 수도 있음) 첫 번째 페이지가 시작된 후 결과가 완료된다는 의미입니다. , 두 번째 페이지는 중단되지 않습니다. 잠시 후에 새로 고쳐지지만 클라이언트는 새로 고쳐지지 않은 것처럼 느껴집니다.