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

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

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

Я ищу понимание того, может ли наличие ТОНа содержимого в кэше быть источником сбоев, которые я испытываю.

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

1 Ответ

0 голосов
/ 01 марта 2019

Согласно этой теме в 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

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

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

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

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

Ben

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...