Кэш HTML5 - возможно ли иметь несколько разных кешей для одного URL? - PullRequest
8 голосов
/ 21 октября 2011

Каждый URL может быть связан с одним манифестом кэша.Но я хочу, чтобы несколько манифестов кэша были связаны с одним и тем же URL.Вот причина:

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

У вас, ребята, есть идеи, как разделить кеш HTML5?

Ответы [ 7 ]

9 голосов
/ 20 декабря 2012

Наиболее эффективный способ:

a) Использовать дату истечения срока давности (max-age) для всех ресурсов, упомянутых в разделе CACHE манифеста, и добавить суффикс временной метки к каждому файлу в разделе CACHE, например:

CACHE:
menu_1355817388000.js
toolbar_1355817389100.js

b) При изменении любого из перечисленных выше файлов на сервере регенерация / обновление манифеста для изменения метки времени.Только файл с измененной отметкой времени будет загружен в следующий раз.Миссия выполнена.

Примечание. Перезагрузите страницу в браузере дважды, так как при первом обновлении браузер загружает только манифест и использует старые кэшированные ресурсы для рисования страницы.Это сделано для ускорения отображения страницы (есть хитрости для решения этой проблемы двойного обновления, но они выходят за рамки вашего вопроса)

См. Дополнительную информацию в этой длинной, но лучшей статье Iкогда-либо видел на appcache .

2 голосов
/ 22 июля 2012

При изменении файла манифеста и повторной загрузке файлов кэша приложения по-прежнему применяются обычные правила кэширования HTTP .Это означает, что если вы установите правильные заголовки кэширования HTTP для этих больших файлов, вы получите 304, чтобы эти файлы не загружались снова.Поэтому нет необходимости разбивать кэш приложения.

2 голосов
/ 15 ноября 2011

Используйте iframe

Манифест кэша вашей страницы будет включать легкие файлы, а манифест кеша iframe, загруженного этой страницей, будет включать большие файлы

В chrome для страницы будет также использоваться кэш приложения iframe. Я еще не тестировал этот метод в других браузерах.

см. Живой пример на http://www.timer -tab.com , а если вы используете chrome, посмотрите его разделенный кеш на chrome: // appcache-internals /

1 голос
/ 14 июля 2014

Может быть, ответ, но я бы хотел пролить свет на мои выводы, поскольку я устраняю неполадки в своем собственном веб-приложении.

Я обнаружил, что могу использовать 2 iframes (manifest_framework) и (manifest_media)чтобы загрузить манифесты, но я все еще не совсем ясно, как они нацелены, но у меня был ограниченный успех.

manifest_framework:

CACHE MANIFEST

CACHE:
appdata.ini
dialog.png
jquery.min.js
login.htm
login.js
manifest.appcache.js

NETWORK:
*

FALLBACK:

manifest_media:

CACHE MANIFEST

CACHE:
manifest_fwk.php
od/audio_track_1_1.m4a
od/audio_track_1_2.m4a
od/audio_track_1_3.m4a
od/audio_track_1_4.m4a
od/video_1.mp4
od/video_2.mp4
od/video_3.mp4

NETWORK:
*

FALLBACK:
./ webapp.php

. / Index.php - это страница «целевой страницы», которая сама по себе не кэшируется, а в автономном режиме возвращается к webapp.php.

Что я не понимаю, так это как эти ссылки на веб-приложение.php страница.Я обнаружил, что могу получить доступ только к одному или другому кешу манифестов.Вышеприведенное работает в мобильном сафари, медиа будет кэшироваться, а изображение, но не обязательно, JS или изображения в манифесте фреймворка.

У кого-нибудь есть больше примеров, когда на один URL / страницу ссылаются несколько манифестов?

0 голосов
/ 31 августа 2014

Рабочая группа W3C отказалась от API файловой системы, поэтому она НЕ ДОЛЖНА ИСПОЛЬЗОВАТЬСЯ.

Вероятно, мы увидим, что он упадет в следующей версии Chrome.

http://www.w3.org/TR/file-system-api/

0 голосов
/ 29 апреля 2012

Если трюк Iframe не работает, используйте HTML5 API FileSystem

См. http://updates.html5rocks.com/2012/04/Taking-an-Entire-Page-Offline-using-the-HTML5-FileSystem-API

0 голосов
/ 21 октября 2011
CACHE MANIFEST

# This is a comment.
# Cache manifest version 0.0.1
# If you change the version number in this comment,
# the cache manifest is no longer byte-for-byte
# identical.

demoimages/mypic.jpg
demoimages/yourpic.jpg
demoimages/ourpic.jpg
sr/scroll.js

NETWORK:
# All URLs that start with the following lines
# are whitelisted.
# whitelisted items are needed to help the site function, you could put regularly
# changing items here
http://example.com/examplepath/
http://www.example.org/otherexamplepath/

CACHE:
# Additional items to cache.
demoimages/allpics.jpg

FALLBACK:
demoimages/currentImg.jpg images/stockImage.jpg`
...