클라이언트 상태 절약이 켜져 있고 우리가 ViewScoped 콩을 사용하는 경우, 페이지에 직렬화 토큰/키를 사용하여 세션에 저장된의 ViewScoped 빈 페이지에 serialzied 또는 말이다?
Mojarra 2.x는 HTTP 세션에서 범위가 지정된 bean을 저장합니다. 세션에 뷰 범위가 지정된 최대 25 개의 기본 값이있는 문서화되지 않은 설정이 있습니다. issue 4015을 참조하십시오. 즉, 실제 뷰 범위 bean 인스턴스는 절대로 JSF 뷰 상태로 저장되지 않는다. 그것들은 JSF 뷰 상태로 저장되는 UUID에 의해서만 참조됩니다. 따라서 클라이언트/서버 상태 저장 방법에 관계없이 JSF 뷰 상태로 직렬화되지 않습니다.
여기 우려가 직렬화하는 경우는, 페이지 직렬화 돌아 간다, 우리는 다음에 대한 ViewScoped 콩에 많은 인스턴스 변수를 저장하지 않는 걱정을 할 수도 있음을 수 있습니다/앞뒤로 와이어.
이것은 유효한 우려 사항입니다. 사실이라 할지라도, 우리는 다소 극단적 인 경우에 대해서 이야기하고 있습니다. 각 평균 속성이 10 개인 100 개의 평균 엔터티 컬렉션은 이미 뷰 상태 크기에 ~ 5KB가 넘지 않아야합니다. 텍스트 기반 리소스 당 최대 70 %까지 웹 서버에서 gzip 압축을 사용하면 많은 대역폭을 다시 얻을 수 있습니다.
그러나 대용량 데이터를 처리하는 경우 HTTP 세션 저장소 크기가 문제가 될 수 있습니다. 참고 : JSF 2.2 Memory Consumption: Why does Mojarra keep the ViewScoped Beans of the last 25 Views in Memory? 뷰 범위가 지정된 bean은 참조하는 페이지가 GET 탐색 또는 브라우저 탭 닫기에 의해 언로드되는 즉시 파기되어야합니다. 기본 JSF 뷰 범위 Bean은 그렇게하지 않습니다. 그것은 다른보기로 다시 게시하는 동안 또는 세션이 만료 될 때만 파괴됩니다.
JSF 유틸리티 라이브러리 OmniFaces을 사용하는 경우 버전 2.2 이후로 @org.omnifaces.cdi.ViewScoped
은 언로드 중에 파손을 지원합니다. 이것은 HTTP 세션 저장 크기에 긍정적 인 효과가 있어야합니다.
고마워 - 이건 알아두면 좋은 정보 야. – BestPractices
여러분을 환영합니다. – BalusC
위대한 답변에 추가 : 렌더링 된 클라이언트 뷰 상태를 추가로 암호화 할 수 있습니다. 나는 이것도 JSF 2.2의 기본값이 될 것이라고 생각한다. –