AppCache 삭제 준비

Chrome 85에서는 기본적으로 AppCache에 대한 지원이 중단됩니다. 대부분의 개발자는 지금 바로 AppCache에서 이전하고 더 이상 기다리지 않아야 합니다.

이전 공지에 이어 Chrome 및 기타 Chromium 기반 브라우저에서 AppCache 지원이 중단됩니다. 개발자는 더 이상 기다리지 말고 지금 AppCache에서 이전하는 것이 좋습니다.

현재 브라우저에서 광범위하게 지원되는 서비스 워커는 AppCache가 제공했던 오프라인 환경을 제공하는 대신 사용할 수 있습니다. 마이그레이션 전략을 참조하세요.

타임라인

최근 변경사항으로 인해 Chrome 출시 일정 중 일부의 시기가 다를 수 있습니다. 이 일정을 최신 상태로 유지하려고 노력하겠지만, 현재로서는 특정 마일스톤을 기다리지 말고 가능한 한 빨리 AppCache에서 이전하시기 바랍니다.

'지원 중단됨' 기능이 여전히 존재하지만 사용을 권장하지 않는 경고 메시지가 기록됩니다. '삭제된' 기능이 브라우저에 더 이상 존재하지 않습니다.

비보안 컨텍스트에서의 지원 중단 Chrome 50 (2016년 4월)
비보안 컨텍스트에서 삭제 Chrome 70 (2018년 10월)
보안 컨텍스트에서의 지원 중단 Chrome 79 (2019년 12월)
AppCache 범위 제한 Chrome 80 (2020년 2월)
'역방향' 오리진 트라이얼 시작 Chrome 84 (2020년 7월)
보안 컨텍스트에서 삭제(오리진 트라이얼를 선택한 경우는 제외) Chrome 85 (2020년 8월)
오리진 트라이얼 완료 후 모든 사용자를 위해 안전한 컨텍스트에서 완전히 삭제 2021년 10월 5일 (약 Chrome 95)

오리진 트라이얼

타임라인에는 삭제가 예정된 두 마일스톤이 나와 있습니다. Chrome 85부터 AppCache는 Chrome에서 더 이상 기본적으로 사용할 수 없습니다. AppCache에서 이전하는 데 시간이 더 필요한 개발자는 '역방향' 오리진 트라이얼가입하여 웹 앱용 AppCache를 사용할 수 있도록 연장할 수 있습니다. 오리진 트라이얼은 Chrome 84 (Chrome 85에서 기본적으로 삭제되기 전)에서 시작되며 2021년 10월 5일 (약 Chrome 95)까지 활성화됩니다. 이때 오리진 트라이얼에 가입한 사용자를 포함한 모든 사용자에게서 AppCache가 완전히 삭제됩니다.

'리버스' 오리진 트라이얼에 참여하는 방법은 다음과 같습니다.

  1. 출처에 대한 토큰을 요청합니다.
  2. HTML 페이지에 토큰을 추가합니다. 다음 두 가지 방법이 있습니다.
    • 각 페이지의 헤드에 origin-trial <meta> 태그를 추가합니다. 예: <meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">
    • 또는 Origin-Trial HTTP 헤더가 포함된 응답을 반환하도록 서버를 구성합니다. 결과 응답 헤더는 다음과 같이 표시됩니다. Origin-Trial: TOKEN_GOES_HERE
  3. AppCache 매니페스트에 동일한 토큰을 추가합니다. 매니페스트의 새 필드를 통해 다음과 같은 형식을 사용합니다.
ORIGIN-TRIAL:
TOKEN_GOES_HERE

ORIGIN-TRIAL와 토큰 사이에 새 줄이 있어야 합니다.

아래에 삽입된 샘플 프로젝트에서 index.html 파일과 manifest.appcache 파일 모두에 올바른 오리진 트라이얼 토큰을 추가하는 방법을 확인할 수 있습니다.

토큰이 여러 위치에서 필요한 이유는 무엇인가요?

동일한 오리진 트라이얼 토큰을 다음 항목과 연결해야 합니다.

  • AppCache를 사용하는 모든 HTML 페이지.
  • ORIGIN-TRIAL 매니페스트 필드를 통한 모든 AppCache 매니페스트.

이전에 오리진 트라이얼에 참여한 적이 있다면 HTML 페이지에만 토큰을 추가했을 수 있습니다. AppCache '역방향' 오리진 트라이얼은 각 AppCache 매니페스트와 토큰을 연결해야 한다는 점에서 특별합니다.

HTML 페이지에 오리진 트라이얼 토큰을 추가하면 웹 앱 내에서 window.applicationCache 인터페이스가 사용 설정됩니다. 토큰과 연결되지 않은 페이지에서는 window.applicationCache 메서드 및 이벤트를 사용할 수 없습니다. 또한 토큰이 없는 페이지는 AppCache에서 리소스를 로드할 수 없습니다. Chrome 85부터는 AppCache가 존재하지 않는 것처럼 작동합니다.

AppCache 매니페스트에 오리진 트라이얼 토큰을 추가하면 각 매니페스트가 여전히 유효하다는 의미입니다. Chrome 85부터 ORIGIN-TRIAL 필드가 없는 매니페스트는 잘못된 형식으로 취급되며 매니페스트 내의 규칙이 무시됩니다.

오리진 트라이얼 배포 시기 및 실행 계획

'리버스' 오리진 트라이얼이 공식적으로 Chrome 84부터 시작되지만 지금 오리진 트라이얼에 가입하여 HTML 및 AppCache 매니페스트에 토큰을 추가할 수 있습니다. 웹 앱의 잠재고객이 Chrome 84로 점진적으로 업그레이드되면 이미 추가한 모든 토큰이 적용됩니다.

AppCache 매니페스트에 토큰을 추가한 후에는 about://appcache-internals을 방문하여 Chrome의 로컬 인스턴스 (버전 84 이상)가 매니페스트의 캐시된 항목과 오리진 트라이얼 토큰을 올바르게 연결했는지 확인합니다. 오리진 트라이얼이 인식되면 매니페스트와 연결된 페이지에 Token Expires: Tue Apr 06 2021... 필드가 표시됩니다.

인식된 토큰을 보여주는 about://appcache-internals 인터페이스

삭제 전 테스트

가능한 한 빨리 AppCache에서 이전하는 것이 좋습니다. 웹 앱에서 AppCache 삭제를 테스트하려면 about://flags/#app-cache 플래그를 사용하여 삭제를 시뮬레이션합니다. 이 플래그는 Chrome 84부터 사용할 수 있습니다.

마이그레이션 전략

현재 브라우저에서 광범위하게 지원되는 서비스 워커는 AppCache가 제공하는 오프라인 환경의 대안을 제공합니다.

Google에서는 전체 AppCache 인터페이스를 복제하지는 않지만 서비스 워커를 사용하여 AppCache의 일부 기능을 복제하는 polyfill을 제공했습니다. 특히 window.applicationCache 인터페이스나 관련 AppCache 이벤트를 대체하지 않습니다.

더 복잡한 사례의 경우 Workbox와 같은 라이브러리를 사용하면 웹 앱을 위한 최신 서비스 워커를 쉽게 만들 수 있습니다.

서비스 워커와 AppCache는 상호 배타적입니다.

이전 전략을 수립하는 동안에는 서비스 워커가 제어하여 로드되는 모든 페이지에서 Chrome이 AppCache 기능을 사용 중지한다는 점에 유의하시기 바랍니다. 즉, 특정 페이지를 제어하는 서비스 워커를 배포하면 더 이상 해당 페이지에서 AppCache를 사용할 수 없습니다.

따라서 개별적으로 서비스 워커로 마이그레이션하려고 하지 않는 것이 좋습니다. 캐싱 로직의 일부만 포함된 서비스 워커를 배포하는 것은 잘못된 방법일 수 있습니다. AppCache를 사용하여 '공백을 메울' 수 없습니다.

마찬가지로 AppCache 삭제 전에 서비스 워커를 배포하다가 이전 AppCache 구현으로 롤백해야 하는 경우 해당 서비스 워커를 등록 취소해야 합니다. 특정 페이지의 범위 내에 등록된 서비스 워커가 있는 한 AppCache는 사용되지 않습니다.

교차 플랫폼 사례

AppCache 삭제 계획에 대해 자세히 알아보려면 특정 브라우저 공급업체에 문의하는 것이 좋습니다.

모든 플랫폼의 Firefox

Firefox는 버전 44 (2015년 9월)에서 AppCache를 지원 중단했으며 2019년 9월부터 베타 및 Nightly 빌드에서 AppCache에 대한 지원이 삭제되었습니다.

Safari(iOS 및 macOS)

Safari에서는 2018년 초에 AppCache가 지원 중단되었습니다.

iOS의 Chrome

iOS용 Chrome은 다른 플랫폼의 Chrome과 다른 브라우저 엔진인 WKWebView를 사용하기 때문에 특별한 경우입니다. 현재 WKWebView를 사용하는 iOS 앱에서는 서비스 워커가 지원되지 않으며 Chrome의 AppCache 삭제 공지에 iOS용 Chrome에서 AppCache를 사용할 수 있는지에 대해 다루지 않습니다. 웹 앱에 iOS용 Chrome 잠재고객이 많다는 것을 알고 있는 경우 이 점을 염두에 두시기 바랍니다.

Android WebView

일부 Android 애플리케이션 개발자는 Chrome WebView를 사용하여 웹 콘텐츠를 표시하며 AppCache를 사용할 수도 있습니다. 하지만 WebView의 경우 오리진 트라이얼을 사용 설정할 수 없습니다. 따라서 Chrome WebView는 Chrome 90에서 예상되는 최종 삭제가 이루어질 때까지 오리진 트라이얼 없이 AppCache를 지원합니다.

자세히 알아보기

다음은 AppCache에서 서비스 워커로 마이그레이션하는 개발자를 위한 몇 가지 리소스입니다.

기사

도구

지원 받기

특정 도구를 사용하다가 문제가 발생하면 GitHub 저장소에서 문제를 열어보세요.

Stack Overflow에서 html5-appcache 태그를 사용하여 AppCache에서 이전하는 것에 대해 일반적인 질문을 할 수 있습니다.

Chrome의 AppCache 삭제와 관련된 버그가 발생하면 Chromium Issue Tracker를 사용하여 신고하세요.

히어로 이미지는 Smithsonian Institution Archives, Acc. 11-007, Box 020, 이미지 번호 MNH-4477.