HTML5 Cache Manifest: резервный раздел и сеть * - PullRequest
4 голосов
/ 19 июля 2010

из Погружение в HTML5: манифест кэша: резервный раздел

CACHE MANIFEST
FALLBACK:
/ /offline.html
NETWORK:
*

Я не понимаю по URL, учитывая, что именно делает этот блок кода.означает, что резервный раздел означает, что если ничего не найдено, покажите offline.html страницу

, тогда network: * все ресурсы будут кэшированы?в нем также указано:

Он использует общий CSS, JavaScript и изображения на каждой странице.Каждый из этих ресурсов должен быть указан в явном виде в CACHE

, который, кажется, конфликтует с network: *, где, как кажется, говорится, что все кешируется?

Ответы [ 2 ]

14 голосов
/ 13 января 2011

В манифесте кэша есть три типа заголовков: CACHE, NETWORK и FALLBACK.Все, что не относится к заголовку, неявно устанавливается в CACHE.Объяснение каждого раздела:

CACHE: Файлы в этом разделе будут кэшироваться.

СЕТЬ: Для файлов в этом разделе требуется подключение к Интернетуи поэтому NOT будет кэшироваться.

FALLBACK: Файлы, сопоставленные с шаблонами под этим заголовком (например, шаблон "/", который соответствует всем файлам) ине был кэширован, вместо него будет показан резервный файл.

Что касается блока кода из Dive в HTML 5, то под ним есть объяснение части «NETWORK: *»:

Это означает, что при просмотре этой гипотетической онлайн-Википедии с автономным режимом ваш браузер будет нормально загружать изображения, видео и другие встроенные ресурсы, даже если они находятся в другом домене.(Это часто встречается на больших веб-сайтах, даже если они не являются частью автономного веб-приложения. HTML-страницы создаются и обслуживаются локально, а изображения и видео - из CDN в другом домене.) Без этого подстановочного флага наша гипотетическаяВикипедия, работающая в автономном режиме, будет вести себя странно, когда вы будете в сети - в частности, она не будет загружать внешние изображения и видео!

Следующая цитата:

Itиспользует общий CSS, JavaScript и изображения на каждой странице.Каждый из этих ресурсов должен быть указан в явном виде в CACHE

означает, что вы должны включить все необходимые файлы CSS, Javascript и изображения в манифест под заголовком CACHE.Он не конфликтует с «NETWORK: *», поскольку заголовок NETWORK NOT означает «кэшировать все».На самом деле это означает обратное: все, что находится под заголовком NETWORK, требует подключения к Интернету и не должно кэшироваться.

7 голосов
/ 03 ноября 2012

Я узнал больше полезного о FALLBACK:

После нескольких экспериментов я попробовал разные вещи, включая то, должны ли файлы в FALLBACK: появляться в разделах CACHE или NETWORK вообще. Ответ, кажется, нет.

Как пример ... ОТСТУПАТЬ: sign-up-portrait.png офлайн-портрет-1.png sign-up-landscape.png offline-landscape-1.png

Недавно я указал это на одном из своих микросайтов. Намерение состоит в том, чтобы показать файлы регистрации в сети и автономные файлы в режиме оффлайн. Это хорошо работает. В частности, файлы в левой части каждой строки неявно, как если бы они были в разделе NETWORK, сайт всегда будет пытаться получить их в Интернете. Они также не должны быть добавлены в раздел NETWORK, в противном случае он переопределяет то, что находится в FALLBACK. Кроме того, к счастью, файлы справа неявно как будто добавляются в раздел CACHE :. поэтому даже если они не используются вначале, они кэшируются при первой загрузке без явного добавления их в CACHE: хотя вы можете добавить их там тоже если хочешь. Это не имеет значения.

Для этой конфигурации, просматривая журналы веб-сервера, я вижу, что каждый раз, когда страница обновляется, apache регистрирует 304 по файлу манифеста и по файлу регистрации png, который требуется для этой версии страницы (есть CSS медиа-селектор, определяющий, какой, на основе размера страницы). Поэтому всегда правильно проверять файлы регистрации, а также обычную проверку манифеста, а это именно то, что мне нужно.

Ради тщательности я попытался выяснить, должен ли корневой файл находиться в разделе CACHE :. Оказывается, нет! Если ваш файл верхнего уровня - index.html, и в нем есть файл манифеста, указанный в его html-теге, то файл манифеста не должен где-либо содержать index.html, он неявно кэшируется.

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

Дополнительный комментарий о формате, не делайте ошибку, которую я сделал, которая заключается в том, чтобы вставить ... СЕТЬ file1.js

Отсутствие двоеточия приводит к тому, что оно полностью разрушается, думая, что СЕТЬ - это сам по себе ресурс.

Это должно быть ... СЕТЬ: file1.js

...