Как кэшировать изображения и HTML-файлы в PhoneGap - PullRequest
16 голосов
/ 16 июля 2011

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

Ответы [ 3 ]

24 голосов
/ 22 мая 2012

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

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

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

После этого вы получите полный опыт работы в автономном режиме: страницы + изображения.

9 голосов
/ 17 июля 2011

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

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

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

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

1 голос
/ 15 июля 2013

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

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

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

С уважением, Раджив

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