Подтвердить что ты не робот

Избегайте кэширования ответов HTTP

Каково окончательное решение для предотвращения кэширования данных http? Мы можем модифицировать клиент, а также сервер, поэтому я думаю, что мы можем разделить задачу между клиентом и сервером.

Клиент может добавить к каждому запросу случайный параметр http://URL/path?rand=6372637263 - Я чувствую, что, используя только этот способ, он не работает на 100% - может быть, есть некоторые интеллектуальные прокси, которые могут обнаружить, что... С другой стороны, я думаю, что если URL-адрес отличается от предыдущего, прокси-сервер не может просто решить отправить какой-то кешированный ответ.

В сервере можно управлять связью HTTP-заголовков:

Expires: Tue, 03 Jul 2001 06:00:00 GMT
Last-Modified: {now} GMT
Cache-Control: no-store, no-cache, must-revalidate, max-age=0
Cache-Control: post-check=0, pre-check=0
Pragma: no-cache

Любые комментарии к этому, какой лучший подход?

4b9b3361

Ответ 1

Заголовки кэширования на стороне сервера должны выглядеть так:

Expires: Tue, 03 Jul 2001 06:00:00 GMT
Last-Modified: {now} GMT
Cache-Control: max-age=0, no-cache, must-revalidate, proxy-revalidate

Избегайте переписывания URL-адресов на клиенте, поскольку он загрязняет кеши и вызывает другие странные семантические проблемы. Кроме того:

  • Используйте один заголовок Cache-Control (см. rfc 2616), потому что поведение с несколькими записями undefined. Также специальные записи MSIE во втором управлении кешем в лучшем случае избыточно.

  • no-store относится к безопасности данных. (это означает, что не записывать это на диск - кэши по-прежнему позволяют хранить ответ в памяти).

  • Pragma: no-cache не имеет смысла в ответе сервера - это заголовок запроса, означающий, что любые кэши, получающие запрос, должны пересылать его в начало.

  • Использование Expires (http/1.0) и cache-control (http/1.1) не является избыточным, поскольку существуют прокси-серверы, которые говорят только на http/1.0 или будут понижать протокол.

  • Технически последний измененный заголовок является избыточным в свете no-cache, но это хорошая идея оставить его там.

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

Ответ 2

Добавление заголовка

Cache-control: private

гарантирует, что кеш gataway не будет кэшировать такой запрос.

Я хотел бы порекомендовать вам лекцию Фабьена Потенцера о кешировании: http://www.slideshare.net/fabpot/caching-on-the-edge