Очистить весь кэш сайта?


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

5 2

5 ответов:

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

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

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

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

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

Если вы говорите о asp.net кэшировать объекты можно следующим образом:

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

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