Как кэшировать изображения и html файлы в PhoneGap

Мне нужен способ для изображений кеша и html файлов в PhoneGap с моего сайта. Я планирую, что пользователи будут видеть сайт без подключения к интернету, как и с ним. Но я вижу информацию только о хранении данных sql, но как я могу хранить изображения (и использовать их позже).

Ответы

Ответ 1

Кэширование, как вам может понадобиться для простой автономной работы, не так просто.

Ваш первый вариант - манифест cache. Он имеет некоторые ограничения (например, размер кеша), но может работать для вас, поскольку он предназначен для того, чтобы делать то, что вы хотите.

Другими параметрами являются сохранение содержимого на диске устройства с использованием API-интерфейсов файловой системы. У этого есть некоторые недостатки, такие как безопасность, и тот факт, что вам нужно загрузить файл с пути/URL-адреса, который отличается от обычного загружаемого файла из Интернета. Для примера рассмотрим hydra.

Один последний вариант может состоять в том, чтобы хранить материал в localStorage (который имеет преимущество быть приватным на всех платформах), а затем вытаскивать его оттуда, когда это необходимо... это означает, что base64 использует все ваши изображения, чтобы это было довольно большой отход от стандартного кэширования.

Ответ 2

Для кэширования изображений проверьте эту библиотеку, из которой я являюсь создателем: imgcache.js , Он предназначен для самой цели кэширования изображений с использованием локальной файловой системы. Если вы посмотрите примеры, вы увидите, что он также может обнаружить, когда изображение не загружается (потому что вы в автономном режиме или у вас очень плохое соединение), а затем автоматически заменяет его кэшированным изображением. Пользователь webapp даже не замечает его в автономном режиме.

Как и для html-страниц.. если они являются статическими файлами html, они могут храниться локально в веб-приложении (файл://в phonegap). Если они являются динамически сгенерированными страницами, проверьте localStorage API, если у вас есть небольшой объем данных, в противном случае API файловой системы.

Для моего веб-приложения я извлекаю только данные json с моего сервера (и обрабатываю/обрабатываю его с помощью Backbone + Подчеркивание). Полезная нагрузка json хранится в localStorage. Если приложение переходит в автономный режим, оно будет извлекать данные json из localStorage вместо сервера (домашняя вилка Backbone.dualStorage)

Затем вы получаете полный офлайн-доступ: страницы + изображения.

Ответ 3

Кэширование очень возможно в ОС Android. но на Apple, как указано выше, существуют ограничения с размером изображений и размером кеша и т.д.

Если вы хотите интегрировать и разрешить кеширование на iOS, вы можете использовать "кэш-манифест" для этого. но сохраняйте обратную связь и ограничения. Также если вы хотите сохранить файл в папке Documents в моем приложении, Apple отклонит ваше приложение. Причина заключается в том, что система резервирует все данные в папке "Документы" в iCould после iOS6, поэтому Apple не разрешает большие данные, такие как изображения или файл JSON, которые могут синхронизироваться с вашего сервера снова, чтобы сохранить в этой папке.

Итак, есть еще одна работа, которая хороша. Поэтому вместо этого можно использовать LocalFileSystem.TEMPORARY. Он не сохраняет данные в библиотеке/кэше, но сохраняет данные в временную папку приложения, которая не является автоматической резервной копией в iCloud и не удаляется автоматически.

Отношения Раджив