Подтвердить что ты не робот

Как предотвратить кэширование страницы html5?

Я преобразовал обычную страницу HTML с ванилью в HMTL5/CSS3 с отзывчивым макетом, и по соображениям безопасности (продиктованным людьми безопасности) страница никогда не должна кэшироваться.

Ранее страница <meta http-equiv="Pragma" content="no-cache"> и <meta http-equiv="Expires" content="-1"> использовалась для предотвращения кэширования страницы.

Что заменяет это в HTML5? Как предотвратить кэширование html-страницы в клиенте?

Я потратил неделю на чтение файлов манифеста, но они, похоже, точно противоположны тому, что я хочу, поскольку прикрепление файла манифеста явно приводит к тому, что страница, к которой она привязана, кэшируется.

И, пожалуйста, не отсылайте меня к определению w3c, для которого мета-элементы теперь разрешены. Я понимаю, что HTML5 не включает элементы cache-control или Pragma в meta.

Мне нужно знать, что он включает, что предотвратит кэширование страницы.

4b9b3361

Ответ 1

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

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

Затем создайте manifest.appcache с таким контентом:

CACHE MANIFEST

# Cache manifest version 1.0

# no cache

NETWORK:
*

Ответ 2

Мне не нравится appcache огромная сумма. Он почти хорошо работает, но может быть настоящей неумолимой болью. Выполняя некоторые рефакторинг кода, я понял, что после выхода из системы я могу вернуться к последней странице. Конечно, обновляя браузер, он заставит пользователя войти в систему, но это нежелательно.

После поиска и просмотра параметров я начал немного расстраиваться. Я не хочу использовать appcache. Затем я понял, что мой код перенаправлялся на страницу входа после разрушения сеанса и получил представление, а что, если я переадресую на домашнюю страницу? И voila, страница была загружена, проверена сессия (и, конечно же, нет), пользователь перенаправлен на логин. Задача решена.

Ответ 3

Я долгое время боролся с той же проблемой. Что работает для меня - по крайней мере до сих пор - в Chrome, FF и IE выполняется следующее:

1) ссылайтесь на файл манифеста <html lang="nl" manifest="filename.appcache"> Из того, что я понимаю, это будет кэшировать все, что следует в этом HTML-документе, поэтому файл манифеста необходим, чтобы это не происходило:

2) используйте файл манифеста filename.appcache со следующим содержимым, которое в основном говорит: для всех файлов не читайте из кеша, а с сетевого сервера:

CACHE MANIFEST
# 2015-09-25 time 20:33 UTC v 1.01 
NETWORK:
*


3) требуется третий шаг: каждый раз, когда вы загружаете (частичное) обновление своего веб-сайта, также изменяйте файл манифеста, изменяя отметку даты и времени в комментарии ( #) линия. Зачем? Потому что, если вы не измените файл манифеста, он не будет считан и по умолчанию будет выполняться шаг 1 и, таким образом, будет кэшироваться и считываться из кеша. Однако тот факт, что файл манифеста изменен, принудительно обновляет файл манифеста, который будет считаться снова, и, таким образом, принудительно применяет инструкцию "не читать из кеша, но считывать с сетевого сервера".

Ответ 4

предыдущий ответ может не работать последовательно, чтобы предотвратить кеширование или очистить существующий кеш в Chrome, но есть работа.

1) Чтобы очистить существующий кеш в chrome, может потребоваться обновить все файлы веб-сайта (например, путем ссылки на новый файл css на каждой странице) вместе с обновлением кэш-манифест до того, как существующий кеш в chrome очистится при втором посещении страницы (из-за "потока" способа отображения страницы: при первом посещении страницы браузер читает и кэширует манифест при продолжении загрузки из существующего кеша. Только после второго посещения будет прочитан и применен обновленный обновленный манифест).

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

<script type="text/javascript">
window.addEventListener('load', function (e) {
window.applicationCache.addEventListener('updateready', function (e) {
        window.location.reload();
    }, false);
}, false);
</script>