ASP.NET 성능 최적화를 위한 보기 상태 캐싱

ASP.NET의 뷰 상태는 클라이언트 요청의 왕복 과정 동안 페이지 및 컨트롤 값을 유지하여 클라이언트 측 상태를 관리하는 내장 기능입니다. 이를 통해 HTTP와 같은 상태 비저장 프로토콜에서도 상태를 관리하는 프로그래밍 기능을 제공합니다.

이 상태는 클라이언트에게 전송되는 모든 응답의 일부로, 페이지의 숨겨진 필드에 Base64 문자열로 인코딩되어 저장됩니다. 클라이언트는 이 상태를 포스트백의 일부로 서버로 반환합니다.

<input id = "__VIEWSTATE"
       type = "hidden"
       name = "__VIEWSTATE"
       value = "/wEPDwUJNzg0MDMxMDA1D2QWAmYPZBYCZg9kFgQCAQ9kFgICBQ9kFgJmD2QWAgIBD
              xYCHhNQcm2aW91c0NvbnRyb2xNb2RlCymIAU1pY3Jvc29mdC5TaGFyZVBvaW50Lld
              lYkNvbnRyb2xzLlNQQ29udHJbE1vZDA1XzRlMjJfODM3Y19kOWQ1ZTc2YmY1M2IPD
              2...=="/>

ASP.NET 뷰 상태는 매우 유용하지만, 해결해야 할 몇 가지 문제가 있습니다. 이러한 문제들은 아래에서 설명합니다.

  1. ASP.NET 뷰 상태는 종종 용량이 큽니다. ASP.NET 애플리케이션 페이지에 풍부하고 무거운 컨트롤과 위젯이 많으면 브라우저와 웹 서버 간에 많은 양의 데이터가 오가게 됩니다. 이러한 무거운 페이로드는 ASP.NET 애플리케이션의 성능 저하와 높은 대역폭 사용량을 초래합니다.
  2. ASP.NET 뷰 상태는 보안 위험을 내포하고 있습니다. 또한 뷰 상태의 일부로 기밀 데이터를 클라이언트로 전송할 때 보안 위험이 발생할 수 있습니다. 이러한 데이터는 공격에 취약하며 공격자가 변조할 수 있습니다. ASP.NET 뷰 상태 데이터를 암호화할 수 있지만, 이 역시 성능 저하를 초래할 수 있습니다.

NCache ASP.NET 뷰 상태용

ASP.NET 뷰 상태 관련 문제를 해결하는 한 가지 방법은 실제 값을 저장하는 것입니다. ASP.NET 뷰 상태 웹 서버에서는 브라우저를 대신하여 고유 토큰(또는 ID)을 전송합니다. 그러면 브라우저는 다음에 웹 서버에 이 토큰을 다시 보낼 수 있습니다. 웹 서버는 이 토큰을 사용하여 저장소에서 올바른 ASP.NET 뷰 상태를 찾습니다. 아래는 토큰 사용 예시입니다.

<input type = "hidden"
       name = "__VIEWSTATE"
       id = "__VIEWSTATE"
       value = "vs:cf8c8d3927ad4c1a84da7f891bb89185" />

ASP.NET 뷰 상태는 웹 서버에 저장할 수 있지만, 로드 밸런싱된 웹 팜 환경에서 ASP.NET 애플리케이션이 실행되는 경우 다음 HTTP 요청이 다른 웹 서버로 전송될 수 있으므로 이상적인 방법은 아닙니다. 따라서 모든 웹 서버에서 접근 가능한 공유 저장소에 ASP.NET 뷰 상태를 저장해야 합니다.

ASP.NET 뷰 상태를 저장하는 분산 캐시 - NCache
그림 1: ASP.NET 뷰 상태를 저장하는 분산 캐시

ASP.NET 뷰 상태를 서버에 저장하는 가장 좋은 위치는 다음과 같습니다. 분산 캐시. 이렇게 하면 모든 웹 서버에 대한 공통 저장소를 가질 수 있을 뿐만 아니라 빠르고 확장 가능한 인메모리 저장소 SQL Server 데이터베이스 또는 기타 스토리지 옵션과 비교하여

NCache .NET, Java, Python, Node.js를 위한 매우 빠르고 확장 가능한 분산 캐시입니다. 또한 다음을 저장할 수 있습니다. ASP.NET 뷰 상태 위에서 설명한 문제를 해결합니다.

ASP.NET 뷰 상태를 구성합니다. NCache

ASP.NET 뷰 상태를 구성하려면 다음을 설치해야 합니다. AspNet.ViewState.NCache NuGet 패키지 전제 조건으로. 그런 다음 다음을 구성해야 합니다. 앱 브라우저 ~와 함께 파일 NCache 플러그 페이지 어댑터. 다음으로, web.config 파일 구성 구성에 대한 뷰 상태를 등록하고 이전에 등록된 구성 섹션에 대한 설정을 지정하려면 애플리케이션에서 다음을 참조하세요. NCache ASP.NET 뷰 상태 문서 단계별 구성을 위해.

뷰 상태 캐싱 및 기타 데이터에 동일한 캐시가 사용되는 경우 다음을 수행할 수 있습니다. 보기 상태 데이터 가져오기 다음과 같이 NC_ASP.net_viewstate_data 태그를 사용합니다.

Hashtable allViewStateData = cache.SearchService.GetByTag(new Tag("NC_ASP.net_viewstate_data"));

ASP.NET 뷰 상태를 서버에 캐싱할 때의 이점

ASP.NET 뷰 상태를 캐싱하면 다음과 같은 이점을 얻을 수 있습니다. NCache.

  1. ASP.NET 성능 향상: NCache 전체 요청 시간을 개선하는 요청/응답 페이로드를 줄입니다.
  2. 대역폭 비용 절감: 페이로드가 작을수록 대역폭 소비 비용도 크게 감소합니다. 이를 통해 상당한 비용을 절감할 수 있습니다.
  3. 보안 : ASP.NET 뷰 상태를 인코딩한 문자열이 더 이상 브라우저로 전송되지 않으므로 보안 위험이 없습니다.
  4. 빠르고 확장 가능한 ASP.NET 뷰 상태 저장소: NCache 매우 빠르고 확장성이 뛰어난 분산 캐시입니다. 즉, ASP.NET은 ASP.NET 뷰 상태 저장소로 인해 확장성 병목 현상을 겪지 않습니다.
  5. ASP.NET 뷰 상태의 복제를 통한 안정성 확보: NCache 분산 캐시에 모든 데이터를 지능적으로 복제합니다. 따라서 캐시 서버가 다운되더라도 ASP.NET 뷰 상태가 손실되지 않습니다.

ASP.NET 뷰 상태 캐싱의 고급 기능 NCache

NCache ASP.NET 뷰 상태 캐싱 및 관리를 위한 풍부한 기능을 제공합니다. 아래는 그 목록입니다.

  1. 최소 크기 임계값: NCache ASP.NET 뷰 상태의 최소 크기를 지정할 수 있습니다. 즉, viewstate 임계값. 이보다 작은 뷰 상태는 캐시되지 않습니다. 이를 통해 무거운 뷰 상태만 캐시할 수 있습니다.
  2. ASP.NET 뷰 상태와 세션 상태를 연결하는 방법 ASP.NET 뷰 상태를 세션 상태와 연결할 수 있습니다.만료ViewstateWithSession). 이렇게 하면 사용자 세션이 만료되면 모든 뷰 상태가 캐시에서 자동으로 제거됩니다.
  3. 페이지 수준 최대 개수 임계값: FIFO(선입선출) 방식을 사용하여 특정 페이지에 대해 유지할 뷰 상태 수를 구성할 수 있습니다. 이렇게 하면 해당 페이지에 새 뷰 상태가 생성될 때마다 가장 오래된 뷰 상태가 제거됩니다. 이렇게 하면 불필요한 뷰 상태가 저장되는 것을 방지하여 캐시 서버의 메모리 사용량을 최적화할 수 있습니다.
  4. 세션 수준 최대 수 임계값: 페이지 수준과 유사하게 FIFO 방식으로 사용자 세션의 최대 뷰 상태 수를 지정할 수 있습니다. 세션당 최대 뷰 상태. 이렇게 하면 새 보기 상태가 생성될 때마다 가장 오래된 보기 상태가 제거됩니다.
  5. 페이지 수준 및 세션 수준 설정: 위의 모든 설정을 페이지마다 다르게 지정하거나 모든 세션에 공통으로 유지할 수 있습니다.

제품 개요

보시다시피 NCache 이 기능을 사용하면 ASP.NET 뷰 상태를 서버에 캐싱하여 ASP.NET 성능을 최적화할 수 있습니다. 또한 캐시에서 ASP.NET 뷰 상태를 보다 효율적으로 관리할 수 있는 다양한 기능을 제공합니다. 이를 통해 복잡한 애플리케이션을 개발하고 이러한 기능을 활용하여 다양한 시나리오를 처리할 수 있습니다.

다음에 무엇을할지?

문의하기

전화

+1 214-619-2601 (미국)

© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.