Не работает манифест кэша автономного хранилища HTML 5

#html #manifest #offline-caching

#HTML #манифест #автономное кэширование

Вопрос:

Я пытаюсь заставить автономное хранилище 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 .

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

 Content-Type    cache-manifest
  

Или это должно возвращать «текст / кэш-манифест»? Возможно, это проблема?

Когда я просматриваю папку автономного хранилища в своей системе (C:UsersMeAppDataLocalMozillaFirefoxProfilesb12u6xza.default там вообще нет ничего, связанного с этим доменом.

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

Ответ №1:

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

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

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

Комментарии:

1. в спецификации указано, что файл может иметь любое расширение

Ответ №2:

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

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

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

С уважением.

Комментарии:

1. Ваш ответ завершил мой поиск. Если запрос не защищен, ваш кэш не будет выполнен! Я ломал голову, пытаясь понять, почему манифест не работает на apache.

2. Нет, я его протестировал, это не имеет ничего общего с безопасным подключением. Это должно работать нормально и локально, без каких-либо https

Ответ №3:

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

Я протестировал его в Safari, и он работал нормально. Проблема была в браузере Chrome. Я также попробовал https, как предложил другой пользователь, что также не устранило проблему. Так что, возможно, в Chrome есть расширение, которое запрещает ему использовать файл кэша. Перед устранением неполадок сначала протестируйте его в стандартных браузерах Safari, FireFox, IE, Opera. Не тестируйте в нестандартных браузерах, таких как Brave, в нем это не сработало.

Официально от Google

Что подтверждает устаревание в версии 61 и далее. Я набираю 80 баллов.

Chrome поддерживает applicationcache и манифест для автономного приложения html5.

Кэш приложений / Автономное приложение / Кэш манифеста.

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

Однако недавнее обновление браузера, похоже, отключило автономную функциональность на сайте HTTPS. Наши файлы манифеста теперь игнорируются, а вместо них отображается Chrome dinosaur.

При повторной проверке через браузеры кажется, что это распространено в Chrome 61 и новее, однако, похоже, это проявилось только недавно.

Проблема с Chrome? или комбинация Chrome и базовой ОС? У нас есть Android / Windows, оба показывают ту же проблему, начиная с 61 года.

Примечание: кэш HTML5 устарел

Все браузеры собираются отказаться от этой функции, я заметил, что они не работают ни в одном из последних браузеров. Mozilla настоятельно рекомендует не использовать этот MDN и не использовать его.

Ответ №4:

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

 AddType text/cache-manifest .manifest

<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/cache-manifest "access plus 0 seconds"
</IfModule>
  

Комментарии:

1. Это для Apache или IIS? Моя среда — Windows / IIS.

Ответ №5:

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

Мой пример(visit: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

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