2012-06-11 4 views
6

ViewState는 어디에 저장되어 있습니까? 서버 또는 클라이언트 측에 저장되어 있습니까?ViewState는 어디에 저장되어 있습니까?

나는 거대한 데이터를 저장해야한다. 나는 Session을 사용하고 있었다. 하지만 한 페이지에서 다른 페이지로 이동할 때 세션을 지울 수 없습니다. 그래서 ViewState를 구현할 생각입니다. 그러나 엄청난 양의 데이터로 실행하면 ViewState에서 오류가 발생합니까?

어떻게 해결할 수 있습니까?

+0

ASP.NET 캐시를 자세히 살펴보면 사용자의 요구에 맞을 수도 있습니다. –

답변

8

Viewstate는 자체 인코딩 된 형식으로 저장됩니다. 직접적으로 클라이언트 측에서 viewstate에 액세스 할 수 없습니다. 클라이언트 측 코드에서이 viewstate에서 중요한 데이터를 가져 오려면 인코딩/디코딩 알고리즘을 알아야합니다.

숨겨진 변수를 사용하여 해당 페이지에서만 사용할 데이터를 저장할 수 있습니다. 숨겨진 변수는 클라이언트 측 코드와 서버 측 코드에서 액세스 할 수 있습니다.

캐시 또는 세션을 사용하여 데이터 테이블 (대용량 데이터)을 저장할 수 있습니다. ViewState와 비교하여 우수한 성능을 보입니다.

캐시는 항상 컴퓨터의 메모리를 사용하고

가, 세션이 구성되어있는 것을 사용

(만 친화력이 설정되어있는 경우 작동) 세션이 지역이 될 수있는 웹 농장에서

또는 원격 (주 서버 또는 데이터베이스 또는 사용자 정의) 캐시는 항상 로컬입니다.

따라서 DataTable을 캐시에 저장하면 메모리를 소비하지만 직렬화는 사용하지 않습니다.

추신 : DataTable 대신 DataSet을 저장하면 거의 변경되지 않습니다.

Refer Cache Implementation

+0

viewstate에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/bb386448.aspx 및 http://weblogs.asp.net/sreejukg/archive/2010/04/06/viewstatemode-in- asp-net-4-0.aspx –

+0

"클라이언트 측에서 viewstate에 액세스 할 수 없습니다.". 사실 암호화되어 있지 않으므로 (기본적으로) 액세스 할 수 있습니다. 그러나 ASP.NET에서 확인할 수있는 해시가 포함되어 있으므로 변경할 수 없습니다. – Steven

+0

@Steven, 나는 우리가 viewstate에 액세스 할 수 있다고 동의하지만 viewstate 변수에서 실제/디코딩 된 값을 얻는 방법 때문에 뷰 스테이트에 액세스하는 것은 유용하지 않습니다. –

7

viewstate가이 양쪽에 저장되지 않습니다, 그것은의 ViewState에 엄청난 양의 데이터를 넣어 좋은 생각이 아니다, 그래서 앞뒤로 서버와 모든 요청 및 응답의 브라우저 사이의 전송입니다 .

1

많은 양의 데이터를보기 상태로 저장하면 사이트 속도가 느려집니다. 쿼리 문자열을 사용하여 이전 페이지의 전체 정보를 저장하는 대신 각 페이지의 데이터베이스에서 새로운 복사본을 가져옵니다.

0

숨겨진 필드의 상태 정보 저장소. 정보는이 숨겨진 필드에서 서버와 클라이언트 사이를 이동합니다.

기본적으로 .net은 모든 컨트롤에 대한 뷰 상태를 구현합니다. 즉, 해당 페이지의 단추를 클릭 할 때 텍스트 상자 값이 손실되지 않는 이유는 무엇입니까?

관련 문제