2012-03-17 3 views
2

글쎄, 아약스 전체 요청으로 작은 사이트를 만들 계획입니다. 로그인, 비동기 요청으로 모두 등록. 문제는 사용자가 사이트를 새로 고침 할 때 이전에 만들어진 모든 동작이 손실 될 때 발생합니다. 이것을 막는 방법, 무엇을 사용할 것인가?전체 아약스 기반 페이지의 개념

답변

1

웹 사이트의 상태를 유지하기 위해 여러 가지 방법이 있습니다 :

    쿠키
  1. 저장 정보;
  2. 딥 링크라고도하는 URI 해시 조각에 정보 저장.
  3. localStorage에 정보를 저장하십시오. 일부 브라우저에서는 지원하지 않습니다.
  4. window.history.pushState에 정보를 저장하십시오. 모든 브라우저가이를 지원하지는 않습니다.

는 당신을 위해 이것을 처리하는 라이브러리가있다. Backbone.js는 자동으로 내역을 처리합니다.

는 브라우저 기능 지원을 확인하는 훌륭한 참고 자료입니다.

0

Ajax 작업마다 페이지의 URL을 변경하는 방법. 이제 Chrome, Firefox는 페이지 새로 고침없이 URL 변경을 지원합니다. 이렇게하면 AJAX 방식으로 계속 작업 할 수 있으며 URL은 매번 변경되지만 페이지는 새로 고쳐지지 않습니다. 사용자가 수동으로 새로 고치려고하면 현재 URL이 상태를 식별하는 데 도움이됩니다.

페이지 새로 고침 확인하지 않고 URL 변경에 대한 더 this

0

클라이언트 구현에 따라 클라이언트 측 데이터가 모두 손실 될 수 있습니다. 적어도 일부 데이터가 서버에 유지되면 클라이언트가 일부 세션 토큰으로 데이터를 다시 요청하게 할 수 있습니다. 클라이언트가 더 얇아 질수록 더 많은 데이터가 서버에 저장되므로 새로 고침 이전의 상태로 사용자 환경을 완전히 복원 할 수 있습니다.

전체 아약스 웹 사이트와 관련된 문제는 브라우저를 다시 처리하는 방법입니다. ajax가 많은 사이트의 경우 jQuery BBQ (http://benalman.com/projects/jquery-bbq-plugin/)와 같은 javascript 라이브러리를 사용하려고합니다. 이 라이브러리는 또한 앵커 참조를 사용하여 응용 프로그램의 각 "상태"에 효과적으로 태그를 추가하기 때문에 내가 생각한 새로 고침과 관련된 몇 가지 문제점을 처리합니다.

클라이언트 데이터 지속성을 위해 플래시 공유 객체 또는 자바 스크립트 쿠키를 볼 수 있습니다. HTML5는 사람들이 추가 옵션을 가질 수 있도록합니다 (http://www.html5rocks.com/en/features/offline). 웹 애플리케이션 보안이 잠재적 인 문제가 될 수 있으므로 거기에 저장하는 것에주의하십시오. 당신이해야합니다

0

(나는 믿을 아니라, 그렇게 할 것) 또는 서버 측 또는 어쩌면 HTML 5 로컬 스토리지로 사용자 세션 (쿠키에있을 어딘가 페이지의 상태를 유지 이것에 대해 많이 말할 수는 없지만 사용하지는 않았습니다.) 그런 다음 누군가가 새로 고칠 때 페이지를 초기화하는 초기화 코드가 있어야합니다. 그것은 많은 작업이지만 잘 정리하면 확실히 작동 할 것입니다.

+0

일부 답변은 url에 정보를 저장하도록 제안했습니다. 연락처 (html)와 같이 html로 내용 (페이지)을 변경하면 더 많은 정보를 얻을 수 있습니다 ... 내가 블록을 하나 이상 보유하고 있으면 로그인 블록, 사용자 데이터는 세션에 저장됩니다. 사용자가 ajax 요청으로 로그인하면 로그인 블록이 일부 사용자 정보로 변경됩니다. 그런 다음 페이지를 새로 고치고 세션 정보를 기반으로 사이트를 렌더링하십시오. 이로 인해 양면에 html 중복이 발생합니다. –

+0

당신은 그것이 작은 사이트 일 것이라고 말합니다; 나는 그것을 세션에 저장하는 것이 그 경우에 적합하다고 생각한다. – Tom