└ persisted : BFache에서 복원되면 true, 그렇지 않은 경우 false를 반환한다.
- 이를 통해 다음과 같이 BFCache로 부터 복원되었음을 감지할 수 있다.
window.addEventListener('pagehide', (event) => {
if (event.persisted) {
console.log('This page *might* be entering the bfcache.');
} else {
console.log('This page will unload normally and be discarded.');
}
});
▶ pagehide
- pagehide 이벤트는 다음 2가지 상황에서 발생한다.
1) 페이지가 정상적으로 언로드 될 때
2) 브라우저가 bfcache 하려고 시도할 때
└ persisted : 이 속성이 false라면 페이지가 bfcache에 들어가지 않을 것이 확실하다. true라면 브라우저가 캐시 하려고 시도한 것 이다.
※ 하지만 위에서 테스트 해봤듯이, 크롬과 같이 다른 캐싱 방지 요소에 의해 결과적으로 캐시되지 않을 수도 있기 때문에 100% 보장할 수 없다. 이때문에 pageshow 이벤트를 활용 하려고 한다.
뒤로가기 감지 방법
- 대부분 앞으로 가기보다는 뒤로가기 행동에서 문제를 겪게 되는 고민을 하였을 것 이다.
- 위에서 BFCache는 감지 할 수 있었고 이제 뒤로 가기이벤트만 감지하면 된다.
※ 예전 나도 글을 썼었고, 뒤로가기의 경우 다음 방법을 사용했었다.
- window.performance.navigation.type
window.performance && window.performance.navigation.type == 2
// 또는 다음과 같은 예시
window.performance && window.performance.navigation.type == window.performance.navigation.TYPE_BACK_FORWARD
- 하지만 이제 해당 API는 deprecated되었다. 검색해 볼 수도 있지만 IntelliJ를 사용하면 친절히 알려주기도 한다.
- 해당 api는 deprecated 되었며 Performance.navigation을 활용하라고 한다. (자세한 내용은 하기 링크 참고)