event.persisted로 bfcache인지 아닌지 확인할 수 있다.
IOS에서 페이지가 오픈되었을 때, PageShow event가 실행되는데 이때 bfcache로 페이지가 열렸는지 아니면 아예 처음 새롭게 열린건치 체크할 수 있는 방법이 있다.
바로 다음과 같은 속성을 이용하면 된다.
https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent/persisted
PageTransitionEvent.persisted - Web APIs | MDN
The persisted read-only property indicates if a webpage is loading from a cache.
developer.mozilla.org
addEventListener('pageshow', (event) => {
if (event.persisted) {
console.log('BFCahe 복원');
}
else {
console.log('처음 열림');
}
});
* 번외로 어디선가 본 코드에서는 persisted 말고도 navogator가 몇 번인지 함께 체크했던 것 같다. 정확히 어떤건지 기억이 잘 안나서 검색를 상당히 광범위하게 했더니 아직 찾을 수가 없다-!
https://hyermione.tistory.com/126
사파리와 파이어폭스 그리고 크롬의 차이점은 bfcache이다. (2탄-상세기록)
bfcache란 js heap까지 포함하여 페이지 전체를 다 캐시로 저장한다. 고로 전체 페이지의 정보가 메모리에 저장되어 있기 때문에 사용자가 이전 페이지로 복귀했을 때, 메모리에 저장된 정보를 노출
hyermione.tistory.com
https://hyermione.tistory.com/129
모바일 사파리에서는 pagehide/show를 사용할 것
모바일 safari에서는 beforeunload 대신에, pagehide 함수가 사용된다. - pagehide MDN https://developer.mozilla.org/en-US/docs/Web/API/Window/pagehide_event Window: pagehide event - Web APIs | MDN The pagehide event is sent to a Window when the
hyermione.tistory.com