Очистить весь кеш сайта? - PullRequest
2 голосов
/ 16 февраля 2009

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

Ответы [ 5 ]

3 голосов
/ 16 февраля 2009

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

2 голосов
/ 16 февраля 2009

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

1 голос
/ 16 февраля 2009

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

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

1 голос
/ 16 февраля 2009

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

0 голосов
/ 16 февраля 2009

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

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

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

...