2016-08-09 4 views
2

사용자가 페이지를 새로 고침 할 필요가 없으므로 최신 버전이없는 단일 페이지 응용 프로그램과 관련된 문제가 있습니다. 페이지가 자바 스크립트를 통해 처음으로로드 된 날짜를 얻을 수있는 방법이 있습니까? 데이터베이스에 코드를 업데이트 한 날짜를 저장 한 다음 정기적으로 해당 날짜를 확인하여 사용자가 새로 고침해야하는지 확인합니다. 그것을 비교할 날짜가 필요합니다.자바 스크립트가로드 된 날짜가

나는 localStorage를 사용할 수 있고 페이지가로드 될 때 타임 스탬프를 넣을 수 있다고 생각했지만 여러 개의 탭이 열려 있으면 문제가 발생합니다. 또한 서버의 데이터베이스에 저장하려고하면 동일한 문제가 발생합니다.

내가 달성하고자하는 것은 Google받은 편지함의 "사용 가능한 새 버전이 있습니다. 새로 고침하십시오"라는 메시지와 비슷한 것입니다. 때때로 그 페이지의 맨 아래에 표시됩니다.

아이디어가 있으십니까?

+0

사용자의 시간을 사용하지 않으려한다고 생각합니다. 서버의 시간과 다를 수 있기 때문입니다. 왜 세션에 데이터를 저장하지 않습니까? 그렇게하면 서버의 시간이되고 세션마다 고유합니다 (새 탭이이 작업을 방해하지 않음). –

답변

2

이상적으로는 응답 헤더에 액세스해야합니다. 하지만 네가 그렇게 할 수 있다고 나는 믿지 않는다. 당신이 더 간단한 것을한다면? localStorage 또는 쿠키로 놀 필요가 없습니다. 페이지가로드 될 때 new Date()으로 설정된 변수 만 있으면됩니다. 다음

<html> 
... 
<script> 
    var pageLoadedOn = new Date() 
</script> 
</html> 

와 같은 뭔가, 나중에에 페이지가 처음 렌더링 할 때 동일해야 pageLoadedOn를 확인할 수 있습니다. 또한 각 페이지가 탭마다 별도로 렌더링되므로 탭에서 작동해야합니다.

1

작업 환경에 따라 타임 스탬프를 확인하는 것은 좋지 않을 수 있습니다. 사용자가 RTC가없는 기기 (생각 : raspberry pi)를 사용하면 불운을 겪을 수 있으며 시스템 시계가 웹 페이지를 열 때 (시간, 일 또는 심지어 년 단위로) 완전히 틀릴 수 있습니다. 이런 식으로 가양 성을 얻을 것입니다. 예를 들어 과거의 시계가 아주 먼 경우 최신 버전을 사용 했음에도 불구하고 다시로드하라는 메시지가 표시됩니다. 이것은 극단적 인 경우입니다.

그냥 버전이 오래된 경우 알 필요가, 당신이 어떻게 든 서버를 조회하기 위하여려고하는 경우에, 왜 당신의 자바 스크립트 어딘가에 버전을 넣지?

var VERSION="1.0.1"; // gobablly accessible variable 

또는 HTML 자체에서 다음 javascript로 검색 할 수 있습니까?

var VERSION=7; // version 7. Increment for each new release. 

심지어 릴리스 타임 스탬프 : 당신이 수 - 점 표기법을 좋아하지 않는 경우에

<body class="something" data-version="1.0.1"> 

, 간단한 정수 충분하다

var VERSION=1470786198; 

그런 다음 주기적으로 서버에 최신 버전이 무엇인지 물어보십시오. 버전이 다른 경우 사용자에게 페이지를 다시로드하라는 메시지가 표시됩니다.

관련 문제