[html] 웹 앱의 오프라인 지원 기능

웹 앱은 온라인 및 오프라인 환경에서 모두 작동할 수 있어야 합니다. 사용자가 오프라인 상태일 때도 웹 앱이 일부 기능을 계속 사용할 수 있게 하는 것이 중요합니다. 이를 위해 웹 앱에서 지원하는 오프라인 기능에 대해 알아보겠습니다.

1. 오프라인 캐싱

오프라인 상태에서도 사용자가 최근에 방문한 페이지나 데이터를 볼 수 있도록 오프라인 캐싱이 중요합니다. 이를 위해 웹 앱은 Service Worker와 Cache API를 사용하여 필요한 자원을 임시로 저장하고, 오프라인으로 사용할 수 있게 합니다.

// Service Worker 등록
if ('serviceWorker' in navigator) {
  window.addEventListener('load', function() {
    navigator.serviceWorker.register('/service-worker.js').then(function(registration) {
      console.log('ServiceWorker registration successful with scope: ', registration.scope);
    }, function(err) {
      console.log('ServiceWorker registration failed: ', err);
    });
  });
}

// Cache API를 사용한 캐싱
self.addEventListener('install', function(event) {
  event.waitUntil(
    caches.open('v1').then(function(cache) {
      return cache.addAll([
        '/',
        '/styles/main.css',
        '/script/main.js'
      ]);
    })
  );
});

2. 오프라인 경험 개선

사용자가 오프라인 상태일 때에도 웹 앱을 통해 데이터를 추가하거나 조작할 수 있어야 합니다. 웹 앱은 오프라인 상황에 대비하여 로컬 데이터베이스를 사용하거나, 변경된 내용을 온라인으로 동기화할 수 있는 기능을 제공해야 합니다.

// IndexedDB를 사용한 로컬 데이터 저장
var request = indexedDB.open('my-database', 1);
request.onerror = function(event) {
  console.log('Database error: ' + event.target.errorCode);
};
request.onsuccess = function(event) {
  db = event.target.result;
};

3. 오프라인 상태 감지

웹 앱은 사용자가 오프라인으로 전환했을 때 오프라인 상태를 감지하여 사용자에게 적절한 메시지를 표시해야 합니다. 또한 온라인으로 다시 전환될 때에도 이를 감지하여 적절한 조치를 취할 수 있어야 합니다.

// 오프라인 상태 감지
window.addEventListener('offline', function(e) {
  alert('오프라인 상태입니다. 일부 기능을 사용할 수 없습니다.');
});

// 온라인 상태 감지
window.addEventListener('online', function(e) {
  alert('온라인 상태입니다. 모든 기능을 사용할 수 있습니다.');
});

위와 같은 오프라인 지원 기능을 통해 웹 앱은 온라인과 오프라인 상태를 함께 고려하여 더 나은 사용자 경험을 제공할 수 있습니다.

참고 문헌: