2009-02-16 2 views
2

Можно ли очистить весь кеш сайта? Я хотел бы сделать это, когда пользователь выходит из системы или истекает срок сессии, вместо того, чтобы указывать браузеру не кэшировать каждый запрос.Очистить весь кеш веб-сайта?

ответ

3

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

+0

Я понял, что это так, но надеялся, что может быть способ очистить все это сразу. Спасибо за подтверждение. –

2

Я, конечно, надеюсь, что это не даст сайту разрушительные полномочия над клиентской машиной!

+0

Что-то вроде window.navigator.removeCache() не похоже, что это было бы слишком разрушительно, если бы он мог очищать только кешированные объекты для этой страницы (и технически даже не нужно было ничего удалять с жесткого диска.) Худший случайный сценарий приводит к тому, что пользователь ждет еще несколько секунд для нового контента. Но ценность во избежание проблем с кешированием во время обновления продукта для контента, который вы обычно хотите кэшировать, стоит того риска. –

+0

@Marcus: @Thomas: очистка кеша для ваших собственных страниц - совершенно другой вопрос. Разумный. –

0

Если говорить об объектах кэша asp.net, вы можете использовать это:

For Each elem As DictionaryEntry In Cache 
     Cache.Remove(elem.Key) 
    Next    

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

1

Если безопасность ваша главная забота здесь, почему бы не использовать HTTPS? Браузеры не кэшируют содержимое, полученное через HTTPS (или кэшируют его только в памяти).

+0

Не уверен в этом: см. Этот вопрос: http://stackoverflow.com/questions/174348/will-web-browsers-cache-content-over-https – VBNight

+0

Да, я согласен, что это зависит от настроек браузера. Настройки по умолчанию в IE и Firefox запрещают кэширование содержимого HTTPS на диске. –

1

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

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

Смежные вопросы