2010-01-26 2 views
0

말과 뷰 상태를 관리 :내가 브라우저에서 다음과 같이 보일 것이다 포럼을 작성합니다 예를 들어 여러 결합 REST 자원

- original post 
    - Re: original post 
    - Re^2: original post 
    - Re^2: original post 
    + Re: original post 
_______________________________________________________________________________ 

Text of the selected post. 

트리보기가 하나 개의 자원, 선택한 게시물의 텍스트 될 것 하나가되고 주변 페이지는 하나가됩니다. 다른 게시물을 선택하면 브라우저에서 올바른 URI를 항상 표시하도록 구멍 페이지를 업데이트해야합니다. 그러나 구멍 페이지가 업데이트되면 트리의 클라이언트 상태가 손실됩니다. 트리 리소스가 다시로드되고 노드가 확장 된 정보, 스크롤 한 정도 등 정보가 손실됩니다.

이 문제를 해결하기위한 가장 효과적인 방법은 무엇입니까?

  • URI를 http://some.where/post/123#someTreeInfo과 같이 사용하고 페이지의 부분 업데이트 만 수행합니까? 트리 정보 부분이 상당히 커질 수 있습니다.
  • 전체 리소스를 구성하고 트리와 같은 기본 리소스가 있다는 사실을 숨 깁니 까? 하지만 트리 상태를 저장하지는 않습니다.
  • 현재보기 상태를 서버로 전송하고 응답으로 다시 가져 오기?
  • 쿠키를 사용 하시겠습니까?
  • HTML 5를 기다리시겠습니까?

다른 아이디어? 추천?

답변

1

URI가 있으면 리소스입니다. 이와 같이이 모든 콘텐츠가 포함 된 페이지 은 ReST 및 일반 이전 HTTP의 전체 중지 리소스입니다. 따라서 서버에서 페이지를 구성하는 데 사용하는 것과 독립적으로 자체적으로 생명력을 발휘합니다.

그러나 페이지를 제공하고 아약스 호출을 사용하여 콘텐츠를 업데이트하려는 경우 언급 한 각 리소스로 바로 이동하여 현재 버전을 얻으십시오. 이 단계에서 첫 번째 글 머리 기호와 마찬가지로 해시 태그를 사용하여 URI를 복사하여 붙여 넣을 수 있습니다. 또는 숨겨진 iframe을 사용하여 브라우저에서 탐색 기능을 올바르게 사용할 수 있습니다. 둘 다 일반적으로 조합하여 사용됩니다. 이 경우 페이지의 현재 상태는 자바 스크립트에서 (또는 둘 다) 또는 URI의 해시 부분에서 (및)입니다.

페이지 자체는 여전히 독립적 인 리소스이므로, 해시 전에 전달할 모든 뷰 "상태"는 새 URI를 만듭니다. 컨텐츠 - 위치를 신중하게 지정하지 않으면 프록시와 캐시가 서로 다른 자원으로 간주됩니다.

마크 업을 생성하기 전에 서버의 모든 UI를 처리하는 시나리오에서는 쿠키를 사용하는 것이 간단합니다. 웹 아키텍처를 깨고 캐싱을 중단합니다. 자바 스크립트를 사용하여 지속성 저장소로 사용하려는 경우 서버가 그것을 보지 않는 한 순전히 화장품이며 그 다음 자신을 도와야합니다.

그런 의미에서, html 5의 로컬 스토리지는 더 많은 공간으로 동일한 문제를 해결할 것입니다.