programing

Chrome Back(크롬 뒤로) 버튼: 초기 페이지의 캐시된 버전만 제공하며, Ajaxed 콘텐츠는 없습니다.

bestprogram 2023. 9. 19. 21:21

Chrome Back(크롬 뒤로) 버튼: 초기 페이지의 캐시된 버전만 제공하며, Ajaxed 콘텐츠는 없습니다.

저는 A와 B 두 페이지가 있습니다.흐름은 다음과 같습니다.

  • A로가기
  • javascript는 A에 추가할 수많은 콘텐츠를 A'를 형성합니다.
  • B로 가다
  • [Back]을 누르면 모든 Ajaxed 컨텐츠 없이 A'가 아닌 A로 돌아갑니다.

다른 사람이 이 사실을 알아차린 적이 있습니까? 만약 그렇다면 어떻게 고치나요?

만약 Chrome이 B에 가기 직전에 A' 상태를 캐싱하고 있었고, A'를 다시 재현했다면, 그것은 받아들일 수 있을 것입니다.만약 Chrome이 단순히 A 전체를 재로딩(Ajax 요청을 포함하여 A'로 변환)한다면, 그것도 가능할 것입니다.A의 오래된 불완전한 버전을 로드하는 현재 동작은 제가 원하는 것이 아닙니다.

편집: [Back]을 눌렀을 때 서버가 새로운 요청을 받지 않기 때문에 캐시된 버전을 로드하는 것으로 알고 있습니다.

이 주제는 오래되었지만 해결책을 공유하려고 생각했습니다.Firefox, Chrome 및 Safari를 일관성 있게 작동시키려면 돌아갈 때 다시 로드해야 하는 페이지에서 언로드 핸들러를 설정하고 캐시 버스팅 헤더를 사용해야 합니다.

HTTP 헤더에서

Cache-Control: must-revalidate, no-store, no-cache, private

그리고 페이지의 자바스크립트에서

$(window).unload(function(){}); // Does nothing but break the bfcache

자세한 정보는 여기를 읽으십시오: http://madhatted.com/2013/6/16/you-do-not-understand-browser-history

주제가 오래된 것은 알지만 이 문제에 대한 해결책을 찾기가 쉽지 않아 몇 시간을 허비하여 해결했습니다.이 두 개의 라인이 크롬 문제를 해결해 주었습니다.

Response.Cache.SetCacheability(HttpCacheability.NoCache);

Response.Cache.SetNoStore();

음, 만약 당신이 xhr 요청을 사용하고 있고 숨겨진 프레임을 사용하지 않는다면 앞뒤 버튼은 xhr 요청에 연결되지 않습니다.

언급URL : https://stackoverflow.com/questions/10096671/chrome-back-button-only-giving-cached-version-of-initial-page-without-any-ajax