2011-05-08 4 views
1

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

Является ли этот браузер зависимым?

+0

Вы пробовали? –

ответ

0

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

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

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

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

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

+0

Но все ли XHRs делают фактический запрос на сервер? Когда вы ссылаетесь на кешированное изображение или таблицу стилей, иногда браузер просто повторно использует его, даже не разговаривая с сервером. Это никогда не случается с XHR? –

+0

Если вы специально сделаете запрос, браузер сделает запрос. С изображениями и таблицами стилей вы специально не делаете этот запрос. Если вы хотите быть абсолютно уверенным на 100%, вы можете добавить аргумент кеша, например jQuery: 'page.html? _ = 324832475934' – Rudie

1

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

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

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

+0

Вы не ошибаетесь. Заголовки должны знать, что кеш остается в силе. – Rudie

Смежные вопросы