В кэше HTML5 нет кэша для самого файла html
index.php:
<html manifest="/cache.manifest">
cache.manifest
CACHE MANIFEST
CACHE:
/img.png
FALLBACK:
/ /offline.html
NETWORK:
*
Все отлично работает, за исключением того, что сам файл index.php извлекается в кеш (проверяется на хроме). Можно ли отключить кеширование файла, определяющего манифест, чтобы кэшировать только img.png?
Спасибо
Ответы
Ответ 1
Нет, файл, который ссылается на манифест, всегда кэшируется. Из спецификация:
Ресурс, объявляющий манифест (с атрибутом манифеста), всегда будет извлекаться из кеша, независимо от того, указан ли он в кеше или нет, даже если он указан в пространстве имен в белой сети.
Ответ 2
У меня была та же проблема.
Я использовал iframe для загрузки страницы с именем 'go_offline.html'
эта страница имеет атрибут manifest для элемента html и некоторого фиктивного содержимого.
iframe скрыт с помощью css
Таким образом, кэшируется только фиктивная страница, и все запросы попадают на резервную страницу в файле .manifest
Ответ 3
Я пробовал работу iframe и нашел, что она созрела с ошибками. Большинство браузеров кэшируют данные для iframe, где страница не может его получить.
Вместо этого загрузите содержимое страницы через AJAX. В основном есть пустая html-страница с манифестом и javascript, которые вытягивают и добавляют свой контент с сервера. Таким образом, кэшируется только пустой html, и контент всегда обновляется с сервера.
Преобразование страницы в этот метод может быть очень сложным, но оно работает. Убедившись, что соответствующий javascript запускается в нужное время, возможно, требуется некоторое распутывание. Перемещение по серверному коду, который не будет вызываться при извлечении из кеша в новый метод ajax.
Примечание: нет необходимости вытягивать условный контент с сервера, если условие находится в строке запроса, разные строки запроса делают отдельный кеш