HTML 5 автономный кэш-манифест хранилища не работает - PullRequest
4 голосов
/ 04 октября 2011

Я пытаюсь заставить работать автономное хранилище HTML5 обычным способом.Я прочитал информацию на DiveIntoHTML5 , и она, кажется, имеет смысл, но она, похоже, не работает для меня.Я задавался вопросом, может ли кто-нибудь помочь мне отладить это.

По сути, я создал домашнюю страницу для приложения, index.htm.Таким образом, мое приложение находится в Интернете по адресу http://www.mydomain.com/online/index.htm.. Пользователи будут посещать эту страницу, где они обычно выполняют все свои повседневные дела.Посещение этого URL создаст кучу кэшированных файлов, чтобы они могли затем посетить http://www.mydomain.com/offline и просмотреть рабочую версию приложения, когда они в автономном режиме.

Несколько верхних строчек кода в сетиДомашняя страница:

<!DOCTYPE html>
<html manifest="cache.manifest">
<head>
   ...etc

Я сгенерировал простой текстовый файл с именем 'cache.txt' и добавил в Блокнот следующее содержимое:

CACHE MANIFEST
http://www.mydomain.com/offline/scripts/jquery-1.6.3.min.js
http://www.mydomain.com/offline/scripts/jquery-ui-1.8.16.custom.min.js
http://www.mydomain.com/offline/scripts/modernizr.min.js
http://www.mydomain.com/offline/scripts/json2.min.js
http://www.mydomain.com/offline/scripts/jquery.deserialize.js
http://www.mydomain.com/offline/scripts/jquery.cookie.js
http://www.mydomain.com/offline/scripts/main.js
http://www.mydomain.com/offline/css/main.css
http://www.mydomain.com/offline/css/structure-details.css
http://www.mydomain.com/offline/css/ui-lightness/jquery-ui-1.8.16.custom.css
http://www.mydomain.com/img/header.gif
http://www.mydomain.com/offline/img/bg.png
http://www.mydomain.com/offline/img/header_riser.gif
http://www.mydomain.com/offline/img/logo.png
http://www.mydomain.com/offline/img/offline.png
http://www.mydomain.com/offline/index.htm

Затем я переименовалэтот файл в «cache.manifest» и загрузил его в корневой каталог онлайн-приложения (на том же уровне, что и моя домашняя страница), чтобы он был доступен по адресу http://www.mydomain.com/online/cache.manifest.

. Хостинговая компания предположительно добавилатип содержимого 'text / cache-manifest' для всех файлов с расширением .manifest в IIS.Я думаю, что это работает, потому что когда я смотрю файл в Firefox на http://www.mydomain.com/online/cache.manifest Firebug говорит мне, что тип контента:

Content-Type    cache-manifest

Или это должно возвращать 'text / cache-manifest'?Возможно, это проблема?

Когда я просматриваю папку автономного хранения в моей системе (C: \ Users \ Me \ AppData \ Local \ Mozilla \ Firefox \ Profiles \ b12u6xza.default, там нет ничего, связанного с этимдомен вообще.

Кто-нибудь может подсказать, что может пойти не так - я немного озадачен?

Ответы [ 4 ]

1 голос
/ 12 января 2012

Прежде всего, спецификация изменилась, теперь вы должны использовать .appcache в качестве расширения манифеста.

Во-вторых, тип mime должен быть определен так, как вы говорите text/cache-manifest.На самом деле я не связан с IIS, но есть два способа добавить этот тип MIME: через интерфейс администрирования IIS или через web.config файл

Я бы порекомендовал вам проверить это с помощью Google Chrome, поскольку на его консоли отображаются все данные и ошибки анализа манифеста, в том числе когда MIME-тип манифеста распознается неправильно.

0 голосов
/ 17 марта 2018

Есть некоторые проблемы, о которых вам нужно позаботиться:

  1. Chrome (и я думаю, что все браузеры наконец-то) обрабатывают файл кэша только через безопасных запросов . Если ваш запрос не защищен, ваш кеш не будет выполнен.
  2. Мобильные браузеры (по крайней мере, устройства, которые я мог протестировать), не заботятся о безопасных или незащищенных запросах. Но я бы предпочел быть готовым к изменению политики .
  3. Я ломал голову, пытаясь понять, почему в Android мой файл работал нормально, а в iOS он выходил из строя, и причина была в том, что Я запускал свой браузер в режиме инкогнито . iOS в режиме инкогнито не может кэшировать страницу, и вы получаете сообщение об ошибке.

Если я найду больше вопросов, я запишу их.

Привет.

0 голосов
/ 21 апреля 2014

Вам лучше протестировать с помощью консоли Chrome! (Вы не можете увидеть их в сети Chrome)

Мой пример (посетите: www.mustrank.com/views/1.php).

Посмотрите на вывод консоли chrome ниже, сначала создается файл манифеста "website.appcache", а затем загружаются источники "1.html" и "main.css"

[Создание кэша приложенияс манифестом www.mustrank.com / views / website.appcache 1.php: 1

Событие проверки кэша приложения 1.php: 1

Событие загрузки кэша приложения 1.php: 1

Событие выполнения кэша приложения (0 из 2) www.mustrank.com / views / 1.html 1.php: 1

Выполнение кэша приложениясобытие (1 из 2) www.mustrank.com / css / main.css 1.php: 1

Событие выполнения кэша приложения (2 из 2) 1.php: 1

Событие кэширования приложения в кеше]

0 голосов
/ 04 октября 2011

попробуйте добавить эти строки в httpd.conf .. это может помочь вам

AddType text/cache-manifest .manifest

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/cache-manifest "access plus 0 seconds"
</IfModule>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...