2009-10-10 4 views
2

SessionPageStatePersister을 기반으로 자신의 PageStatePersister 클래스를 작성하여 공유 디스크에 가장 최근의 1Viewstate을 기록합니다. 나는 모든 웹 서버가 그것에 접근 할 수 있기 때문에 세션에서 Viewstate을 유지하는 것보다 더 잘 확장 될 것이라고 생각한다. 그들은 만료를 다룰 필요가 없으며 더 적은 메모리를 사용한다.플랫 파일의 viewstate와 SQLserver의 viewstate

사용자가 브라우저를 닫으면 서버에 알리고 서버는 2 시간 동안 액세스하지 않은 파일을 삭제합니다. 지금까지는 그렇게 좋았지 만 SQL 서버 데이터베이스에 Viewstate을 저장하는 것이 더 빠르고 더 효율적인지 궁금합니다.

  1. ViewState 파일의 평균 크기는 30k입니다.
  2. 현재 숨겨진 필드를 읽고 Viewstate 키를 가져 와서 파일에 직접 액세스하고 deserialize합니다. 정렬하거나 검색 할 필요가 없습니다.
  3. 시간당 약 2000 명의 동시 사용자가 있으며 최근 20 개의 Viewstate 세션을 저장하면 시간당 약 20,000 개의 임시보기 파일이 저장됩니다.
  4. 정기적으로 파일을 반복하고 가장 오래된 파일을 삭제해야합니다.

그래서이 경우에는 더있는하십시오 플랫 파일 시스템 또는 데이터베이스?

+0

당신은 "모든 웹 서버가 뷰티 스테이트에 액세스 할 수 있기 때문에 뷰 스테이트를 유지하는 것보다 확장 성이 좋을 것"이라고 언급했습니다. viewstate가 세션에서 유지된다는 것은 무엇을 의미합니까? 당신이 명시 적으로 원하는 것입니까? viewstate 데이터를 클라이언트의 브라우저가 아닌 서버에 저장하려면? –

+2

yep viewstate가 서버에 있어야합니다. – Tuviah

답변

3

ViewState를 SQL Server에 저장하는 것이 훨씬 더 확장됩니다. 궁극적으로 최근 10에서 최근 50으로 증가시키려는 경우, DB로드가 비교적 간단하게 증가합니다. 디스크 I/O는 DB I/O보다 일반적으로 가능한 한 피해야합니다. 버려진 파일이 디스크 상에있는 것을 발견하면 정리 작업이 훨씬 더 잘됩니다. WHERE DateInserted > 20 minutes ago보다 훨씬 무거울 수 있습니다.

관련 문제