Предотвращение попадания HTTP-клиента на сервер с кешем (iphone) - PullRequest
2 голосов
/ 04 февраля 2010

Хорошо, я в замешательстве.Я пытаюсь отправить обратно магические заголовки с моего сервера, которые не позволят клиенту снова подключиться к серверу, пока ресурс не устареет.

Я понимаю, как работает ETag или Last-Modified (валидация) - клиент ВСЕГДА по-прежнему будет попадать на сервер, и серверу необходимо проверить дату или etag по текущему значению, чтобы узнать, стоит ли беспокоиться об обслуживанииновый.

Cache-Control и Expires, однако, я не думаю, что понимаю.Я установил следующее:

Cache-Control: max-age=86400, must-revalidate

Независимо от того, что я делаю, мой клиент (мой браузер, curl, NSURLConnection) всегда снова обращается к серверу при втором запросе.Это клиент?Какие заголовки я должен отправить обратно, чтобы заставить клиента использовать его частный кеш для определенного промежутка времени?

Ответы [ 3 ]

2 голосов
/ 04 февраля 2010

Как намекает Натан в своем ответе, клиенты могут отправить последующий запрос с заголовком If-Modified-Since, чтобы определить, устарел ли их кеш или нет. Если клиент получает ответ 304 Not Modified, он будет доставлять содержимое из локального кэша.

Согласно RFC 2616 (спецификация HTTP 1.1), наличие must-revalidate в заголовке Cache-control вынуждает клиентов перепроверять состояние своего кэша на исходном сервере до того, как он будет разослан. кеш.

2 голосов
/ 04 февраля 2010

Для дальнейшего использования - Марк Ноттингем написал отличное руководство по кэшированию HTTP:

http://www.mnot.net/cache_docs/#CACHE-CONTROL

1 голос
/ 04 февраля 2010

Сервер должен проверить заголовок If-Modified-Since и вернуть заголовок 304 not modified, если он хочет, чтобы браузер продолжал кэшировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...