Я работаю над устройствами с ограниченными возможностями. Из-за накладных расходов на запросы AJAX я намерен агрессивно кэшировать текстовые и графические объекты в браузере, но мне нужно настроить размер кэша на одно устройство как на 1MB
текста и 9MB
изображений - довольно сложная задача для многоэкранное, графическое приложение.Кэширование текстовых/графических объектов в средах с ограничением производительности
Поскольку устройство легко попадает в пределы памяти, я должен быть очень осторожным в отношении того, как я управляю размером моего приложения: размер файла кода, количество одновременных HTTP-запросов, количество циклов процессора JS при отправке событий, ограничение переходов CSS и т. Д. Мой вопрос сегодня заключается в том, как разработать сдержанный размер кеша для текстовых активов и изображений.
Для текста я развернул свой собственный cache с использованием JSON.encode().length
для объектов и 'string'.length
для приблизительного размера. Приложение вручную получает/устанавливает записи кэша. При попадании настраиваемого верхнего предела мусор класса собирает себя от gcLimit
до gcTarget
размеров, придавая вес последним свойствам доступа (то есть, если что-то было доступно в последнее время, пропустите сбор этого объекта в первый раз).
Для изображений я намерен предварительно проинсталлировать элементы интерфейса и позволить браузеру самому заниматься сбором мусора, удаляя элементы DOM и никогда не сохраняя Image()
объектов. Для предварительной загрузки я, скорее всего, снова скачу свое - у меня есть примеры для подражания как ImgPreloader FiNGAHOLiC и this. Мне нужно иметь в виду такие функции, как «размер окна загрузки» и «максимальные запросы кеша», чтобы я не случайно перегружал устройство.
Это огромная проблема, работающая в такой ограниченной среде, а общие структуры, такие как Backbone, не поддерживают «max Collection size». В других местах на SO пользователи указывают лимиты 5MB
для HTML5 localStorag
e, но моя цель - не сохранение сеанса, поэтому я не вижу преимущества.
Я не могу не чувствовать, что могут быть лучшие решения. Идеи?
Редактировать: @ Xotic750: Благодарим за обращение к индексированномуDB. К сожалению, это приложение является стандартной веб-страницей, построенной на Opera/Presto. Еще лучше, платформа не настойчивее. Скала и трудное место: - /.
Спасибо, @Ascherer, для исправлений форматирования. Все еще привык к формату отправки SO. – homeyjd