Манифест кэша портит мое приложение, когда он-лайн - PullRequest
2 голосов
/ 27 сентября 2011

Гуру СО

Я пытаюсь поиграть с CACHE MANIFEST / HTML5. Мое приложение JS тяжелое и построено на jquery / jquerymobile.

Это выдержка из того, как выглядит мой манифест

CACHE MANIFEST
FALLBACK:
/
NETWORK:
*
CACHE:
/css/style.css
/js/jquery.js

Но каким-то образом приложение не загружает файлы в первый раз, и все приложение выходит из строя.

  • Мой формат неверен?
  • Должен ли я никогда не загружать JS в кэш?
  • Как мне относиться к этому по-разному, чтобы всегда сначала проверять сеть, если что-то недоступно, и загружать только вещи, доступные из кэша?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 сентября 2011

Я попробовал простую страницу с вашим манифестом кеша, и он работал нормально для меня, поэтому я не совсем уверен, в чем проблема. Но,

  1. Да, с форматом что-то не так. Записи в разделе FALLBACK должны состоять из двух частей: шаблона и URL-адреса. В нем говорится: «Если какая-либо страница, соответствующая шаблону, недоступна в автономном режиме, вместо этого отобразите URL-адрес (который будет кэширован)». Основным примером этого (, как показано здесь ) является "/ /offline.html", что означает "для всех страниц, если мы не в сети и они не кэшированы, вместо этого отобразите /offline.html". Однако я не думаю, что это является источником вашей проблемы, поскольку я проверил ее с вашим точным манифестом, и она все еще работала.
  2. В файлах JS нет ничего особенного. Должно быть хорошо, чтобы загрузить их в кэш.
  3. Я не понимаю третий вопрос. Здесь, возможно, есть две цели: а) как проверить, есть ли более новая версия файла, доступная онлайн, прежде чем вернуться в кэш, и б) как проверить сеть, чтобы увидеть, есть ли файл, который не кэшируется, и если мы не в сети, вернемся к странице ошибки. Ответ (а) заключается в том, что после включения манифеста кэша все работает совсем по-другому. никогда не будет проверять наличие новых версий файлов, если только не существует новой версии манифеста. Поэтому вы всегда должны обновлять манифест всякий раз, когда вы меняете какие-либо файлы. Ответом на (б) является раздел ОБОРОТА.

См. Dive Into в HTML5 , отличную главу по этому вопросу, в частности раздел «Искусство отладки, или« Убей меня! Убей меня сейчас! »», В котором объясняется, как обновляется манифест.

Кроме того, я не думаю, что мы дошли до сути вашего вопроса, потому что неясно, что вы подразумеваете под "приложением не загружать файлы с первого раза". Какие файлы не загружаются? Они правильно загружаются после обновления? И т.д.

0 голосов
/ 27 сентября 2011

Единственный способ, которым я получил это для обновления кеша, - переименовать файл манифеста с номером коммита или отметкой времени и изменить объявление кеша на

<html manifest='mymanifest382330.manifest'>

Я сделал эту часть моей сборки.

...