Если в CacheStorage Cache веб-приложения слишком много контента, может ли приложение зависнуть?

Там не так много читать Cache в спецификации.

Я хотел бы знать, если я храню БОЛЬШИЕ объемы данных в кеше, может ли веб-приложение аварийно завершить работу? Или лимит времени выполнения приложения отдельно от кеша? Будет ли кэш выгружать оперативную память и выполнять откат в файловой системе, если это необходимо? Или Cache попытается загрузить все в память (таким образом, вылетит)? Что оно делает?

Я ищу понимание того, может ли наличие TON вещей в кеше стать источником сбоев, которые я испытываю.

РЕДАКТИРОВАТЬ, нашел ответ, ниже.

1 ответ

Решение

Согласно этой теме в Google Chromium-Dev Group, CacheStorage может иметь ошибки, которые приводят к сбою приложения, когда оно переполнено. Это не связано с ограничением размера кеша (оно делает все возможное, чтобы не удалять содержимое кеша).

Из темы Chromium-Dev:

К сожалению, у Cache API есть недостаток в дизайне. Метод cache.keys() возвращает список каждого запроса в кеше. Вы можете легко использовать это для исчерпания памяти и OOM браузера. Метод cache.matchAll() имеет похожую проблему с возвратом каждого ответа.

Чтобы избежать злоупотреблений, мы в настоящее время ограничиваем результаты запросов кеша до 10 МБ:

https://cs.chromium.org/chromium/src/content/browser/cache_storage/cache_storage_cache.cc?l=70&rcl=e09c68d80742c2c73854eb4abb54c4a0878200a9

Я полагаю, что в долгосрочной перспективе Cache API должен реализовать асинхронную итерацию, как только она станет доступна для webidl:

https://github.com/heycam/webidl/issues/580

Тем временем я боюсь, что вам нужно будет создавать запросы в chrome, чтобы их размер не превышал 10 МБ. Разделение данных между объектами кэша может быть возможным способом сделать это.

Надеюсь, это поможет.

Бен

Другие вопросы по тегам