Кэш-контроль метатега html5 больше не действителен?

Как я могу определить

<meta http-equiv="cache-control" content="no-cache" />

в HTML5? Согласно валидатору W3C и документация больше не действует. .


person powtac    schedule 12.07.2011    source источник
comment
Почему бы не отправить его с заголовками HTTP?   -  person Linus Kleen    schedule 12.07.2011
comment
@Linus Kleen: я ищу чисто HTML-решение.   -  person powtac    schedule 12.07.2011
comment
Я попал сюда именно потому, что тоже ищу решение на чистом HTML5. Мой веб-сайт размещен на страницах GitHub, что не дает мне возможности изменять заголовки HTTP.   -  person Andrés Botero    schedule 15.07.2011
comment
@AndrésBotero. Могу я спросить, зачем вам no-cache на страницах GitHub, учитывая, что он предназначен для статического контента?   -  person Stu Cox    schedule 13.12.2012
comment
Способ изменения заголовков в целом, не обязательно только без кеша, хе-хе. Я не помню сейчас, какой заголовок я хотел изменить.   -  person Andrés Botero    schedule 13.12.2012


Ответы (4)


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

person wandarkaf    schedule 13.12.2012

В начале кода вам нужно использовать это:

<!DOCTYPE html>
<html manifest="cache.manifest">

...

Затем создайте файл cache.manifest с содержимым того, что вы хотите кэшировать, т.е.

CACHE MANIFEST
# 2010-06-18:v2

# Explicitly cached 'master entries'.
CACHE:
/favicon.ico
index.html
stylesheet.css
images/logo.png
scripts/main.js

# Resources that require the user to be online.
NETWORK:
*

# static.html will be served if main.py is inaccessible
# offline.jpg will be served in place of all images in images/large/
# offline.html will be served in place of all other .html files
FALLBACK:
/main.py /static.html
images/large/ images/offline.jpg

Манифест может иметь три отдельных раздела: CACHE, NETWORK и FALLBACK.

КЭШ: это раздел по умолчанию для записей. Файлы, перечисленные под этим заголовком (или сразу после CACHE MANIFEST), будут явно кэшированы после их первой загрузки.

СЕТЬ: файлы, перечисленные в этом разделе, могут поступать из сети, если они не находятся в кеше, в противном случае сеть не используется, даже если пользователь находится в сети. Здесь вы можете внести в белый список определенные URL-адреса или просто "", что позволяет использовать все URL-адреса. Большинству сайтов требуется "".

FALLBACK: необязательный раздел, определяющий резервные страницы, если ресурс недоступен. Первый URI — это ресурс, второй — запасной вариант, используемый в случае сбоя или ошибки сетевого запроса. Оба URI должны иметь тот же источник, что и файл манифеста. Вы можете захватывать определенные URL-адреса, а также префиксы URL-адресов. «images/large/» будет фиксировать сбои с таких URL-адресов, как «images/large/whatever/img.jpg».

person mahen3d    schedule 15.02.2014

Нет HTML-решения. Кэш приложений Mozilla (cache.manifest) устарел. Сайт кеша приложений говорит:

Эта функция была удалена из веб-стандартов. Хотя некоторые браузеры все еще могут его поддерживать, он находится в процессе отказа. Избегайте его использования и обновляйте существующий код, если это возможно. ... Вместо этого используйте Service Workers< /сильный>.

Кроме того, я предлагаю вам использовать HTTP Cache-Control для решения проблем с кешем.

person jonasjacek    schedule 13.12.2016

Нет решения HTML, потому что это не проблема разметки. Кэширование — это действие над ресурсом, а не часть самого определения ресурса.

Как уже говорили другие, заголовки HTTP - лучший способ управления кешем, потому что они наблюдаются всеми кешами - <meta> теги наблюдают только кеши браузера. Они должны быть установлены вашим сервером/веб-фреймворком.

Тем не менее, я не удивлюсь, если браузеры по-прежнему соблюдают <meta http-equiv="cache-control" content="no-cache"> для страниц с типом документа HTML5.

person Stu Cox    schedule 13.12.2012