Проверьте этот сайт на предмет основных требований и ограничений: http://appcachefacts.info/
Есть несколько вещей, которые мешают работе кэша приложений при развертывании файлов в хранилище устройства:
Cross-Origin-Policy
: вы ссылаетесь на файл манифеста из другого источника -> не разрешено WebKit
: я предполагаю, что ваш WebView, отображающий index.html, работает на основе WebKit (iOs / Android).Я провел несколько тестов с Safari и Chrome на настольном ПК и выяснил, что манифест игнорируется, если index.html подается с URL-адресов http://localhost
или file://...
, даже если манифест соблюдает Cross-Origin-Policy.Это поразит вас, так как локально развернутый index.html на вашем устройстве будет обслуживаться file://...
в большинстве случаев.
Поэтому мне пришла в голову идея загрузить манифест на устройство и сослаться на него.в моем index.html.Это приводит к некоторым дополнительным проблемам, которые мне не удалось устранить (мои настройки были PhoneGap, jQueryMobile, iOS):
Mime-Type
: вы не можете гарантировать, что манифест (подается с устройствахранилище) с правильными заголовками MIME-типа, но без них браузер будет игнорировать манифест. Manifest-URI
: Вы не можете (жестко закодировать) распространять файл index.html с предопределеннымmanifest="uri/to/appCacheManifest.manifest"
атрибут (потому что вам нужно скачать и сохранить его с вашего сервера, прежде чем вы узнаете этот URI).Кроме того, вы не можете манипулировать своими активами, распространяемыми с помощью приложения PhoneGap (папка www), чтобы каким-либо образом изменить атрибут.
До сих пор я не мог заставить манифест работать в PhoneGap WebView.Я читал некоторые статьи, где люди упоминали (iOS), что WebView не может работать с файлами манифеста, но это не правильно.Если вы переходите к веб-приложению через мобильный браузер и сохраняете закладку на главном экране, iOS встраивает этот сайт в WebView.Я попробовал это с моим приложением (обслуживаемым веб-сервером; не встроено в PhoneGap), и манифест работал просто отлично.
Это означает, что если вы можете перемещать файлы, которые «находятся в хранилище устройства»"для веб-сервера, и вы настроили собственный WebView для указания на это местоположение, манифест должен работать нормально.