Что такое кэш приложения в HTML5?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Кэш приложения (Application Cache) в HTML5 — это механизм, который позволяет веб-приложению работать оффлайн, предоставляя набор ресурсов (HTML-страницы, CSS, JavaScript, изображения), которые браузер кэширует локально.
Для использования кэша приложения требуется файл манифеста с расширением .appcache, связанный с HTML-страницей через атрибут manifest тега <html>:
<html manifest="manifest.appcache">
...
</html>
Файл манифеста имеет следующую структуру:
CACHE MANIFEST
# Версия манифеста (опционально, для обновления кэша)
# v1.0
CACHE:
# Явно кэшируемые ресурсы
/css/style.css
/js/script.js
/images/logo.png
FALLBACK:
# Резервные ресурсы для случая отсутствия соединения
/offline.html /
NETWORK:
# Ресурсы, которые всегда должны запрашиваться из сети
*
Основные секции файла манифеста:
CACHE:: Ресурсы, перечисленные в этой секции, будут кэшированы после загрузки первой страницы с указанным манифестом.FALLBACK:: Определяет резервные ресурсы. Если запрос к сети для основного ресурса не удается, браузер загрузит указанный резервный ресурс. Формат:основной_ресурс резервный_ресурс.NETWORK:: Ресурсы, перечисленные в этой секции, никогда не будут кэшированы и всегда будут запрашиваться из сети. Символ*означает, что все ресурсы, не перечисленные в других секциях, всегда будут запрашиваться из сети.
Обновление кэша приложения происходит, когда файл манифеста изменяется. Браузер загружает обновленный манифест, сравнивает его с текущим и загружает новые или измененные ресурсы. Новые файлы доступны только после перезагрузки страницы.
События, связанные с кэшем приложения:
checking: Браузер проверяет наличие новой версии манифеста.downloading: Браузер загружает ресурсы, указанные в новой версии манифеста.progress: Прогресс загрузки ресурсов.updateready: Новая версия кэша готова к использованию. Требуется перезагрузка страницы.cached: Ресурсы успешно кэшированы первый раз.noupdate: Манифест не изменился.error: Произошла ошибка при загрузке или обновлении кэша.
API кэша приложения доступен через window.applicationCache.
// Проверка статуса кэша
console.log(window.applicationCache.status);
// Обработка события updateready
window.applicationCache.addEventListener('updateready', function() {
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
// Применить новую версию кэша и перезагрузить страницу
window.applicationCache.swapCache();
window.location.reload();
}
}, false);
Хотя Application Cache предоставлял оффлайн-возможности, его использование не рекомендуется в новых проектах из-за сложности управления, проблем с обновлением и отсутствия гибкости. В качестве современного подхода для оффлайн-доступа и других функций прогрессивных веб-приложений (PWA) используются Service Workers.