문제

페이지의 사용자 컨트롤을 사용하면 모든 컨트롤이 ViewState에 자신의 상태를 저장하여 메모리 사용에 영향을 미친다는 것을 이해합니다. 내 질문은 얼마입니까?

예를 들어 - 마스터 페이지에 대한 컨트롤로 피드백 양식이 있습니다. 기본적으로 표시 = "false"로 설정됩니다. 사용자는 피드백 버튼을 클릭하면 필요한 동안 컨트롤이 표시됩니다.

마스터 페이지에 위치하지만 볼 수있는 모든 것에 대해 모든 페이지에 앉아 있으면 상대적인 성능 영향은 무엇입니까? 내가 개발하고있는 사이트는 잠재적으로 많은 양의 트래픽을 가질 것이며 나중에 상황이 느려지면 나중에 두통을 겪을 지 궁금합니다.

감사

도움이 되었습니까?

해결책

성능은 서버와 클라이언트에 영향을 줄 수 있습니다. 주로 클라이언트에게 전송되는 ViewState를 포함하여 HTML의 양을 줄이려고합니다. 이것이 모든 페이지에 앉으면이 ViewState 정보를 실제로 필요한 것보다 더 자주 보냅니다.

피드백 양식 컨트롤이 피드백 페이지에만 추가되도록하는 논리가 있어야한다고 생각합니다. Visible = "False"를 사용하지 않고 자체 페이지에 놓고 링크하거나 페이지에 컨트롤을 동적으로 추가하십시오.

주요 이점은 대역폭 사용량을 줄이고 클라이언트의 페이지를 더 빠르게 렌더링하는 것입니다. 보조 혜택에는 더 쉽게 디버깅 및 클라이언트 코드 렌더링이 포함됩니다.

모든 성능 문제로 인해 성능을 테스트하고 하드 데이터를 기반으로 판단해야합니다. 이 경우 클라이언트에서 ViewState의 크기를 계산 한 다음 서버에서 대역폭 사용 크기를 확인하기위한 요청 수를 곱하십시오. 클라이언트에서는 FireBug와 같은 도구를 사용하여 클라이언트가받은 전체 페이지 크기를 이해합니다.

다른 팁

그것은 제어에 따라 다릅니다. 수백 행을 가진 Datagrid는 100K의 ViewState를 생성 할 수 있습니다. 다른 한편으로, CheckBox는 너무 많이 생성되지 않습니다.

빈 ASPX 페이지에서 피드백 양식 컨트롤을 삭제하고 브라우저에서 방문하여 __viewstate hidden 필드를 확인할 수 있습니다. 이것은 ViewState 측면에서 피드백 양식이 각 페이지에 추가 될 것입니다. 그러면 허용되는지 결정해야합니다.

나는 처음에 그러한 최적화에 대해 htink하지 않을 것입니다. 나중에 느리게되면 항상 양식을 순수한 HTML로 변경하고 Ajax 또는 무언가를 사용하여 IT 데이터를 서버에 게시 할 수 있습니다. 사용자 컨트롤이되고 복사되지 않는 한, 붙여 넣은 콘텐츠를 복사하지 않는 한 최적화하기 쉽습니다.

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