2012-06-15 2 views
7

Chrome 19에서 이상한 버그가 발생했습니다. pushState를 지원하는 풀 AJAX 웹 사이트 (AJAX 요청을 통해 모든 외부 링크가 열림)를 구현했습니다. JSON 형식을 통해 AJAX에서 HTML 스 니펫을 전송합니다.Chrome의 Ajax + pushState 버그

외부 링크를 통해 내 사이트를 떠난 다음 Chrome은 해당 URL에 대한 캐시 된 데이터를 렌더링합니다. 문제는 JSON 콘텐츠를 캐시하여 전체 웹 페이지 대신 표시한다는 것입니다.

이 다음 단계로 재현 (UPDATE : 나는 그 이후로 내 웹 사이트에 AJAX 기능을 제거, 그래서이 버그는 더 이상을 표시하지 않음) : 두 번째 날짜에

  1. 열기 http://beta.mirtes.cz/
  2. 클릭 링크 (2012 년 6 월 6 일, "모든 것이 이상한 이메일로 시작되었습니다."). 이 페이지 (지금은 http://beta.mirtes.cz/it-all-began-with-a-strange-e-mail)가 AJAX를 통해로드되었습니다.
  3. "모두 이상한 이메일로 시작되었습니다"를 클릭하십시오. 외부 웹 사이트로 리디렉션됩니다.
  4. 페이지가 완전히로드 된 후 Chrome에서 '뒤로'를 클릭하십시오.

Cache-Control : no-cache로 모든 AJAX 응답을 보내려고하지만 아무런 효과가 없습니다.

Firefox 12는 정상적으로 작동합니다.

답변

7

임시 해결 방법이 있습니다. 추가 더미 GET 매개 변수 -ajax = 1을 사용하여 AJAX 요청을 수행합니다. 이 방법으로 브라우저는 일반적인 HTML 컨텐츠와 JSON의 차이점을 인식 할 수 있습니다. 사용자에게 아무런 영향을주지 않으며, 매개 변수는 방화범 경고에서만 볼 수 있습니다.

+0

당신이 한 일을 조금 더 설명하고 어떻게 문제를 해결할 수 있습니까? – Ryan

+0

추가 GET 매개 변수 (이 경우 ajax = 1)를 사용하여 모든 AJAX 요청을 작성합니다. 이 매개 변수는 백그라운드에서만 수행되기 때문에 사용자에게는 보이지 않습니다. –

+0

이렇게하면 브라우저가 URL이 다르기 때문에 전체 HTML 콘텐츠와 JSON AJAX 콘텐츠의 차이를 알 수 있습니다. 따라서 캐시해서는 안되는 캐시 된 JSON 컨텐츠를 보여주지 않습니다. http://ondrej.mirtes.cz/에서 내 홈페이지의 기능을 확인할 수 있습니다. –

관련 문제