2014-11-16 1 views
0

이것은 메타 질문이 아닙니다.앞으로 탐색 할 때 AJAX 활동이 사라집니다.

기술적으로 다음과 같은 동작에 숨겨진 원칙을 이해하려고합니다.

  1. 투표를/ 아래 아무것도 페이지 1에,이 페이지에 다른 링크를
  2. 클릭,
  3. 가 다시 버튼을 눌러 돌아와을 : 그것은 재현하는 것은 매우 쉽습니다.

귀하의 upvote는 더 이상 페이지에 나타난 모든 AJAX 활동이 아닙니다.

왜 그럴까요? 브라우저가 그렇게 행동하는 이유는 무엇입니까? 어떻게 StackOverflow가 그것을 막을 수 있습니까?

당신이 연결되지 않은 경우

1, 단지 페이지를 이동하기 전에 페이지 (새 주석, 대답, 투표)에 다른 사람의 활동을 기다립니다.

+1

을 ... 그리고는 "막을 수 "이것은 성능상의 이유로 문서가 매번 바뀌 었는지 여부를 확인하도록 브라우저에 권고하지만 그렇게하지는 않습니다. 따라서 HTML 문서는 서버에 왕복하지 않고 브라우저가 캐시에서 곧바로 가져 오는 일정 시간 동안 "여전히 유효한"것으로 간주됩니다. – CBroe

+0

감사합니다 @CBroe, 그것에 대해 완전한 대답을 쓰시겠습니까? –

답변

2

여기는 재생중인 브라우저의 캐시입니다.

SO가이를 어떻게 방지 할 수 있는지 묻는 질문이 있기 때문에 브라우저가 문서가 매번 변경되었는지 여부를 확인하도록 요청하면됩니다. 하지만 성능상의 이유로 그렇게하지는 마십시오. 따라서 HTML 문서는 서버에 왕복하지 않고 브라우저가 캐시에서 곧바로 가져 오는 일정 시간 동안 "여전히 유효한"것으로 간주됩니다. 당신이 당신의 브라우저가이 페이지에 대한 제작 요청에 대한 브라우저의 개발자 도구에서 HTTP 응답 헤더를 보면,이 같은 것을 볼 수

,

Cache-Control: public, no-cache="Set-Cookie", max-age=60 

- 그래서이 HTML 문서를 고려하여야한다 60 초 동안 유효합니다. 브라우저에서 빠져 나와 브라우저로 돌아가거나 탭을 닫고 기록에서 다시 열면 60 초 이내에 브라우저는 캐시 된 버전을 가져 와서 서버에 다시 확인하지 않고 표시합니다. 무언가가 바뀌지 않았습니다. 그리고 투표가이 원본 HTML 문서를 조작하지 않았기 때문에 (DOM 만 귀하의 투표로 업데이트되었습니다) 여전히 이전 투표 수가 표시됩니다.

그러나 브라우저에서 [F5]을 누르면 캐시가 우회됩니다. 캐시 된 문서가 다시 요청되므로 투표가 표시됩니다. 이번에 업데이트 된 숫자는 업데이트 된 HTML 문서의 일부이므로 너에게 봉사한다.

당신이 HTTP 캐싱에 더 많은 탐구하려는 경우

, 모양의 가치 보이는 구글의 상단의 일부 리소스 : 그래서이 _cache_라고

Caching Tutorial for Web Authors and Webmasters

A Beginner's Guide to HTTP Cache Headers

1

"투표를 취소하지 않았습니다."귀하의 브라우저가 ajax 요청을 캐싱하기 때문에 귀하의 투표가 보이지 않습니다.

Chrome에서 F12 키를 누른 경우 설정 아이콘을 클릭 한 다음 "캐시 사용 안 함 (DevTools가 열려있는 동안)"을 클릭하면 브라우저를 다시 누르면 요청이 다시 전송됩니다.

코드에서 특정 요청을 캐시하지 않으려면 지정하지 않도록하십시오. 다음과 같은 게시물을 확인 할 수 있습니다

:

Prevent browser caching of jQuery AJAX call result

-

시. 테스트를하는 동안 열리는 콘솔 (F12)에 있어야합니다.

+0

_ "브라우저가 ajax 요청을 캐싱 중이므로"_ - 아니요, 원본 HTML 문서를 캐싱합니다. 그리고 투표가 AJAX를 통해서만 이루어지기 때문에 브라우저가 캐시 한 문서의 표현은 변경되지 않습니다. – CBroe

+0

@PedroMoreira 감사합니다. 나는 이것이 어떻게 작동하는지에 대한 내 자신의 생각을했다. 이것은 부분적으로 질문에 대답하지만 캐싱이 무엇이며 어떻게 작동하는지 설명하지 않습니다. AJAX가 게임의 일부일 때 페이지의 '캐싱 (caching)'과 전체 작동 방식에 대해 더 자세히 설명하고 싶습니다. –

관련 문제