Если в CacheStorage Cache веб-приложения слишком много контента, может ли приложение зависнуть?
Там не так много читать Cache
в спецификации.
Я хотел бы знать, если я храню БОЛЬШИЕ объемы данных в кеше, может ли веб-приложение аварийно завершить работу? Или лимит времени выполнения приложения отдельно от кеша? Будет ли кэш выгружать оперативную память и выполнять откат в файловой системе, если это необходимо? Или Cache попытается загрузить все в память (таким образом, вылетит)? Что оно делает?
Я ищу понимание того, может ли наличие TON вещей в кеше стать источником сбоев, которые я испытываю.
РЕДАКТИРОВАТЬ, нашел ответ, ниже.
1 ответ
Согласно этой теме в Google Chromium-Dev Group, CacheStorage может иметь ошибки, которые приводят к сбою приложения, когда оно переполнено. Это не связано с ограничением размера кеша (оно делает все возможное, чтобы не удалять содержимое кеша).
Из темы Chromium-Dev:
К сожалению, у Cache API есть недостаток в дизайне. Метод cache.keys() возвращает список каждого запроса в кеше. Вы можете легко использовать это для исчерпания памяти и OOM браузера. Метод cache.matchAll() имеет похожую проблему с возвратом каждого ответа.
Чтобы избежать злоупотреблений, мы в настоящее время ограничиваем результаты запросов кеша до 10 МБ:
Я полагаю, что в долгосрочной перспективе Cache API должен реализовать асинхронную итерацию, как только она станет доступна для webidl:
https://github.com/heycam/webidl/issues/580
Тем временем я боюсь, что вам нужно будет создавать запросы в chrome, чтобы их размер не превышал 10 МБ. Разделение данных между объектами кэша может быть возможным способом сделать это.
Надеюсь, это поможет.
Бен