사용자 세션 개체에 얼마나 많은 데이터를 저장할 수 있거나 저장해야 합니까?

StackOverflow https://stackoverflow.com/questions/73008

  •  09-06-2019
  •  | 
  •  

문제

우리 웹 사이트에는 각 페이지에서 사용자로부터 정보를 캡처한 다음 웹 서비스를 사용하여 백엔드 프로세스에 제출하는 여러 마법사 스타일 양식 응용 프로그램이 있습니다.

안타깝게도 각 양식 제출 중에 정보를 덩어리로 제출할 수 없으므로 프로세스가 끝날 때까지 사용자 세션에 정보를 저장하고 동시에 모두 제출해야 합니다.

서버 메모리/SQL Server 디스크 공간의 양이 사용자 세션에 저장할 수 있는 양에 대한 유일한 제약입니까, 아니면 고려해야 할 다른 사항이 있습니까?

편집하다:이 사이트는 ASP.NET 웹 양식을 기반으로 구축되었습니다.

도움이 되었습니까?

해결책

정보가 중요하지 않다고 가정하면 정보를 쿠키에 저장하여 서버 측에 저장하는 데 필요한 정보의 양을 줄일 수 있습니다.이를 통해 JavaScript를 통해 정보에 액세스할 수도 있습니다.

또는 viewstate를 사용하여 정보를 저장할 수 있지만 이로 인해 서버와 클라이언트 간에 대량의 데이터가 전송될 수 있으며 선호하는 솔루션은 아닙니다.

저장해야 하는 세션 정보의 양은 애플리케이션, 예상 사용자 수, 서버 사양 등에 따라 크게 다릅니다.보다 정확한 답변을 위해서는 더 많은 정보가 필요합니다 :)

마지막으로 프로세스 전반에 걸쳐 수집된 정보가 페이지마다 필요하지 않다고 가정하면 모든 정보를 데이터베이스 테이블에 저장하고 세션의 고유 ID 레코드만 저장할 수 있습니다.각 페이지가 제출되면 DB 레코드가 업데이트되고 마지막 페이지에서 모든 정보가 검색되어 제출됩니다.필요한 DB 읽기 수로 인해 각 후속 페이지에서 이전 정보를 검색해야 하는 경우 이는 아이디어 솔루션이 아닙니다.

다른 팁

전체 HTML 양식이 포함된 ASP 페이지 1개를 갖고 사용자가 보이는 부분을 채우고 "제출"할 때까지 일부를 숨길 수도 있습니다.

그런 다음 작성된 부분을 숨기고 양식의 다음 부분을 표시하십시오.

이는 .NET 프레임워크에서 매우 쉬울 것입니다. 각 "마법사 단계"에 패널을 사용하고 각 패널을 표시하고 숨길 때 논리를 추가하세요.

그러면 모든 데이터가 한 페이지에 표시됩니다.

전통적인 HTTP 모델을 사용하는 경우(예:runat="server"를 사용하지 마세요) 데이터를 다른 asp 페이지에 게시하고 게시된 데이터를 숨겨진 양식 요소에 배치할 수 있습니다. 필요한 만큼의 페이지에 대해 이 작업을 수행할 수 있으므로 세션 변수에 아무것도 배치하지 않아도 됩니다.

사용자 세션 개체에 많은 양의 데이터를 저장하는 것은 성능 관점에서 문제가 있으므로 ASP.Net은 위 게시물에서 언급한 것 외에 몇 가지 다른 해결 방법을 제공합니다. ASP.NET 프로필 공급자 세션 관련 정보를 데이터베이스에 유지할 수 있습니다.당신은 또한 사용할 수 있습니다 세션 상태 서버 모든 세션 정보를 저장하기 위해 별도의 서버를 사용합니다.클러스터나 로드 밸런서를 사용해야 하는 경우 이러한 상황을 모두 고려하면 서버는 서로 다른 서버의 세션 정보를 계속 인식할 수 있습니다.Http Session 개체에 정보를 저장하면 한 사용자가 해당 세션에 대해 항상 동일한 서버로 이동해야 하는 문제가 발생합니다.

세션, viewstate, 데이터베이스.이것들은 모두 느리지만 작업을 완료할 것입니다.

숨겨진 양식 필드가 제가 가장 좋아하는 답변입니다.

상태를 유지하는 다른 방법이 있습니다.쿠키, 팝업 창, 프레임셋 또는 iframe.

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