Кеширует ли XMLHttpRequests заголовки ответа? - PullRequest
1 голос
/ 08 мая 2011

Если я сделаю XMLHttpRequest и браузер кеширует ответ, будет ли он также кэшировать заголовки HTTP-ответа? То есть, в следующий раз, когда я сделаю тот же запрос, получу ли я те же значения из response.getResponseHeader?

Зависит ли это от браузера?

Ответы [ 2 ]

1 голос
/ 08 мая 2011

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

http://www.mnot.net/javascript/xmlhttprequest/cache.html

И я рекомендую, если вы хотите увидеть, что на самом деле происходит, вы должны взять анализатор пакетов, такой как Wireshark, и убедиться в этом сами. Я могу представить, что браузер по крайней мере выполняет запрос HEAD для XmlHttpRequest, даже если он дает вам кэшированное тело, но я могу ошибаться.

0 голосов
/ 08 мая 2011

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

Кэшируется только тело ответа.

Конечно, вы можете легко это проверить. Сделайте XHR-запрос к статическому ресурсу (файл img или txt или что-то еще) и проверьте заголовок Date.

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

редактировать
jQuery добавляет (по-моему, по умолчанию) аргументы анти-кеширования к GET-запросам (очень раздражает), что как бы отвечает на ваш вопрос: ничто не кэшируется таким образом

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