2009-09-03 1 views
1

특정 객체를 사용자 세션에 넣을 수있는 시점을 이해하려고 시도하고 있으며 세션 저장 방법 및 값을 검색하는 방법이 궁금합니다. 세션 상태에서 키 A를 가져 오도록 요청하면 키 B도 읽습니까?사용자 세션에서 개체를 가져 오도록 요청하면 전체 세션이로드됩니까?

저는 viewstate가 하나의 큰 객체로 저장되어 있고 전체로드 된 후에는 내 코드에서 액세스한다고 가정합니다. 세션 상태 데이터와 비슷하거나 서버에서 요청 된 키만로드합니다.

내 상태가 20KB이고 5KB의 값을 가져 오려면 모든 20KB 또는 필요한 5KB 만 읽습니까?

답변

2

기본적으로 세션 상태는 세션이 만료 될 때까지 (지정된 사용자로부터 비활성 기간) 메모리에 저장됩니다. 뷰 상태는 요청간에 전혀 저장되지 않지만 실제로 숨겨진 양식 필드로 페이지에 전송됩니다. 이 데이터는 후속 요청에서 서버로 다시 전송됩니다.

질문에 답하기 위해 기본 동작은 전체 세션이 이미로드되어 있으므로 실제로 액세스했는지 여부와 관계없이 메모리에 저장됩니다.

그러나이 관리를위한 몇 가지 옵션이 있습니다, 당신은 여기에 훌륭한 참조를 찾을 수 있습니다

http://msdn.microsoft.com/en-us/library/z1hkazw7.aspx

+0

ViewState는 세션 상태가 아닌 숨김 필드에 배치됩니다. 세션 상태가 서버의 메모리에 남아 있으므로 서버 팜을 사용할 때 사용자가 후속 요청에서 다른 서버로 바운스되거나 서버 응용 프로그램 풀이 새로 고쳐지면 세션이 손실 될 수 있습니다. – NerdFury

+0

죄송합니다, 내가 틀리게 읽었습니다. 당신은 뷰 상태라고했습니다. – NerdFury

0

기본적으로는하는 사용자 세션은 메모리에 저장됩니다. 데이터베이스에 저장되도록 구성 할 수는 있지만 직렬화되며 다시 인스턴스화 될 때 완전히 읽혀집니다.

그렇습니다. 사용자 세션에서 20KB의 데이터가 있으면, 항상 20KB의 메모리가 사용됩니다.

관련 문제