Не могу заставить работать простой кеш манифеста html5! - PullRequest
9 голосов
/ 03 мая 2011

Я пытаюсь заставить работать простой веб-кеш html5.

Это моя единственная html-страница, index.html:

<!DOCTYPE HTML>

<html manifest="./main.manifest">
  <body>
    <p>Hi.</p>
  </body>
</html>

Это мой единственный файл кэша, main.manifest:

CACHE MANIFEST
# 2011-05-02-03

index.html

Я работаю на виртуальном хостинге apache, я поместил файл .htaccess в свой веб-каталог, где находятся эти два других файла, потому что я подумал, что, возможно, мне нужно определить тип mime:

AddType text/cache-manifest .manifest

Итак, в итоге у меня есть три файла в этом каталоге:

index.html
main.manifest
.htaccess

Когда я захожу на страницу Chrome с моего Mac, Safari с моего iphone или Chrome с моего устройства Android 2.3, ничего не происходит, страница просто загружается как обычно. Если я включу режим полета (убивая все соединения), страница не может быть загружена (поэтому, я думаю, кэширование не удалось).

Что мне здесь не хватает?

Спасибо

------------ Обновление ------------------

Я думаю, что тип пантомимы не распознавался правильно. Я обновил .htaccess до:

AddType text/cache-manifest manifest

Теперь, если я запускаю Google Chrome с включенной консолью, я вижу:

Document was loaded from Application Cache with manifest
http://example.com/foo/main.manifest
Application Cache Checking event
Application Cache NoUpdate event

Firefox запрашивает меня, когда я загружаю страницу о веб-сайте, желая разрешить мне сохранить его на диск, так что это хорошо. Похоже, он также работает на Android 2.3.4. Браузер по-прежнему говорит: «Эта страница не может быть загружена, потому что вы не подключены к Интернету», но затем он все равно загружается.

Спасибо!

Ответы [ 2 ]

5 голосов
/ 12 июля 2011

Во-первых, вы были правы в первый раз в своем объявлении типа MIME.Это должно быть так:

AddType text/cache-manifest .manifest

Далее прочитайте этот абзац из Dive Into HTML5 :

В: Нужно ли перечислять мои HTML-страницыв моем кешированном манифесте?

A: Да и нет.Если все ваше веб-приложение содержится на одной странице, просто убедитесь, что страница указывает на манифест кэша с помощью атрибута manifest.Когда вы переходите на страницу HTML с атрибутом манифеста, предполагается, что сама страница является частью веб-приложения, поэтому вам не нужно указывать ее в самом файле манифеста.Однако, если ваше веб-приложение охватывает несколько страниц, вы должны перечислить все HTML-страницы в файле манифеста, иначе браузер не будет знать, что существуют другие HTML-страницы, которые необходимо загрузить и кэшировать.

Итак, в этом случае вам не нужен манифест кэша .Браузер автоматически кэширует вашу страницу (если это единственный ресурс, такой как, например, файл CSS или файл Javascript).

Для получения дополнительной информации перейдите по ссылке выше.

0 голосов
/ 21 августа 2012

У меня возникли проблемы с использованием «явно кэшированных» элементов в моих манифестах, поэтому я обычно настраиваю их так:

CACHE MANIFEST
# 2011-05-02-03

CACHE:
index.html

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

Я рекомендую использовать консоль JavaScript Chrome - она ​​выводит события кэша приложения по мере их возникновения, включая ошибки.

...