Обнаружение, заполнен ли кеш браузера - PullRequest
7 голосов
/ 14 мая 2010

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

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

Кто-нибудь знает, есть ли какие-нибудь ресурсы или примеры того, как использовать JavaScript для обнаружения того, что кэш браузера заполнен , ведет себя плохо?

Спасибо.


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


Дальнейшее уточнение: Спасибо всем за обновления по кешированию. Наши сценарии отправляются с правильными заголовками, и мы видим эту проблему только в IE6 и IE7 - кажется, что браузеры Mozilla и WebKit не затронуты, но я все еще не уверен, как именно мы будем использовать JavaScript и / или XmlHttpRequest, чтобы проверить, был ли объект извлечен из кэша, что позволяет нам проверить, плохо ли работает кэш.

Ответы [ 3 ]

5 голосов
/ 14 мая 2010

Кэш браузера не будет вызывать проблемы, если он заполнен ... с небольшими примечаниями.

  1. Если кеш браузера заполнен, браузер просто должен загрузить новый контент, а не извлекать его из локального кэша. (например, медленнее)
  2. Если кэш браузера содержит недопустимые данные (например, старая копия файла JavaScript), тогда да, у вас могут возникнуть проблемы. (не потому, что кэш заполнен, а потому, что вы не предоставили новый файл для пользователя (Google для: expires headers и как изменить URL-путь к вашим файлам, когда вы вносите изменения в скрипт, чтобы гарантировать, что вы "сломаетесь") кеш))
  3. В Internet Explorer, когда вы загружаете файл загрузки (например, электронную таблицу Excel) пользователю, он должен зайти в кеш для работы (ошибка IE) - я не уверен , если файл больше, чем общий кеш пользователя, если это вызывает проблемы с сохранением файла и, следовательно, с его загрузкой (Stackers pls может подтвердить, так или иначе)

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

  • Измените URL-адрес ваших сценариев, если вы хотите загрузить новую версию (например,)
    • http://example.com/scripts/latestThing.js?ver=3425
    • где "ver" извлекается из вашей системы управления версиями, чтобы вы всегда заставляли браузер загружать свежую копию в любое время, когда вы меняете свой скрипт.
  • Как только вы убедитесь, что URL-адрес изменяется, вы можете отправлять заголовки кэша, которые сообщают браузеру, что они должны кэшировать файлы в течение очень долгого времени (например, ваши файлы библиотеки JS (например, jQuery), вероятно, не меняются каждый час, день, неделю или даже месяц)
0 голосов
/ 14 мая 2010

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

0 голосов
/ 14 мая 2010

Это, вероятно, не будет работать как есть. Но это просто идея:

var img = new Image();
(new Image).src = "imageWithFarFutures.png";
window.onload = function(){
    document.getElementById("someIframe").src = "imageWithFarFutures.png";
    // NOW if the server DOES get a FRESH request for "imageWithFarFutures.png"
    // wouldn't it mean that the browser has kicked it out of its cache?
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...