Есть ли способ отключить кэширование клиентского браузера для определенных сайтов?


10

Это независимый от браузера вопрос, но мы тестируем с IE9.

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

Вместо того, чтобы по-настоящему решить проблему, мы думаем обойти ее, отключив кеш для этого конкретного сайта. Однако мы не знаем как.

Ответы:


10

Единственный правильный способ отключения кэширования в браузере - это заголовки HTTP из самого веб-приложения. Заголовок HTTP 1.1 «Cache-Control» должен быть достаточен для любого браузера после 2000 года. Но для дополнительной защиты сервер может выдавать заголовки HTTP 1.1 «Cache-Control» и HTTP 1.0 «Expires» вместе .

Хакерский, но иногда встречающийся способ обработки аннулирования кэша - это строка «cachebuster» в URL-адресах с сервера. Кешбастер часто основан на отметке времени и добавляется в виде строки запроса в каждую HTML-ССЫЛКУ, чтобы сделать URL-адрес уникальным и использоваться только один раз. Нечто подобное http://example.org/filename.html?cb=<timestamp+random_value>. Это уродливо и ничего не делает, заголовки HTTP не намного лучше. Но его можно использовать как взлом для ограниченной аудитории (например, в Интранете) или как дополнительный уровень защиты вместе с правильными заголовками HTTP.

AFAIK нет способа выборочно отключить кэширование для одного сайта только из Internet Explorer. Одно (чертовски сложное) решение может состоять в том, чтобы установить кэш Varnish в качестве промежуточного кеша в вашей локальной сети, настроить Internet Explorer на использование Varnish в качестве прокси-сервера HTTP и использовать язык VCL на Varnish для перезаписи заголовков HTTP только для этого конкретного сайта.

Честно говоря, я думаю, что ваш продавец делает ошибку здесь. Я бы предложил установить Fiddler2 для IE или Firebug для Firefox и посмотреть фактические заголовки HTTP, которые отправляет веб-приложение. Сопоставьте это с уроком кэширования Марка Ноттингема, на который я уже ссылался выше - я предполагаю, что заголовки разрешают кэширование или, по крайней мере, явно не запрещают кэширование.


0

Убедитесь, что вы установили правильные заголовки expire. Если вы поместите время в прошлое, содержимое не будет кэшироваться. Проверьте время / дату на рабочей станции, где работает IS9. Смотрите также: http://www.mnot.net/cache_docs/


0

Если вы не можете изменить содержимое веб-сайта, о котором идет речь, вы можете использовать прокси-сервер для изменения содержимого на своем браузере. Это позволит вам изменить заголовки expire.


0

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

В IE это можно сделать так:

Вы можете дважды проверить настройки IE в Свойства обозревателя-> Дополнительно-> Безопасность-> Не сохранять зашифрованные страницы на диск.


Он попросил решение, не зависящее от браузера.
Мирча Вутцовичи

1
@Mircea Это IS агностик решение браузера. Я только что предоставил бесплатный пример использования IE. Многие другие браузеры имеют возможность отключить кэширование SSL, но настройки находятся в разных местах.
JeffG

0
<meta http-equiv="PRAGMA" content="NO-CACHE">

http://www.zann-marketing.com/developer/20051018/stop-browser-caching-using-meta-tags.html

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


Это сработало бы, если бы GollyJer имел возможность изменять сайт. Я полагаю, что он не основывается на своем вопросе.
JeffG

Если быть точным, «случайные ключи» не могут эффективно предотвратить кеширование. Браузер и промежуточные кэши могут по-прежнему хранить ответ на диске. Но в следующий раз, когда запрашивается тот же файл, случайный ключ изменит URL-адрес, и поэтому кэшированная версия на диске не будет использоваться. Новое представление будет загружено с сервера и, возможно, кэшировано на диск. Кроме того, тег META PRAGMA устарел и не должен использоваться - рекомендуется использовать заголовки HTTP Expires и Cache-Control.
Jesper M
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.