Офлайн-функциональность в веб-приложениях измеряется способностью страницы или приложения работать корректно при отсутствии сетевого соединения. Lighthouse предоставляет инструменты для анализа и оценки этого аспекта, опираясь на Service Workers, кеширование ресурсов и стратегии загрузки контента.
Service Worker — это скрипт, работающий в фоновом режиме браузера, позволяющий перехватывать сетевые запросы, управлять кешем и обеспечивать функциональность приложения офлайн. Основные возможности:
Пример регистрации Service Worker:
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/service-worker.js')
.then(registration => {
console.log('Service Worker зарегистрирован с областью:', registration.scope);
})
.catch(error => {
console.error('Регистрация Service Worker не удалась:', error);
});
}
Для обеспечения офлайн-функциональности критически важно правильно организовать кеширование:
Пример использования Cache API:
self.addEventListener('install', event => {
event.waitUntil(
caches.open('static-v1').then(cache => {
return cache.addAll([
'/',
'/styles/main.css',
'/scripts/main.js',
'/images/logo.png'
]);
})
);
});
self.addEventListener('fetch', event => {
event.respondWith(
caches.match(event.request)
.then(response => response || fetch(event.request))
);
});
Lighthouse оценивает офлайн-доступность через аудит “Service Worker” и “Offline availability”:
Основные показатели:
Prefetching и Precache Загружает ресурсы заранее, чтобы ускорить доступ при офлайн-режиме. Например, можно кешировать страницы, которые пользователь с высокой вероятностью откроет.
IndexedDB для динамических данных Позволяет хранить сложные структуры данных, например результаты API-запросов, обеспечивая доступ к ним без сети.
let db;
const request = indexedDB.open('app-db', 1);
request.onupgradenee ded = event => {
db = event.target.result;
db.createObjectStore('posts', { keyPath: 'id' });
};
request.onsucc ess = event => {
db = event.target.result;
};
Офлайн-функциональность напрямую влияет на пользовательский опыт и производительность. Правильная настройка Service Worker и стратегий кеширования обеспечивает стабильную работу приложения вне зависимости от состояния сети.