Как я могу гарантировать, что ответ ajax будет кэширован? - PullRequest
3 голосов
/ 21 мая 2009

Я хочу сделать вызов ajax, но я хочу убедиться, что он будет кэширован. Я использую JQuery.

Есть ли способ убедиться, что запрос остается в кеше для большинства популярных браузеров?

Ответы [ 4 ]

8 голосов
/ 21 мая 2009

В jQuery вы, вероятно, захотите явно добавить заголовок If-Modified-Since с параметром ifModified, который по умолчанию равен false:

$.ajax({
     ...
     ifModified: true,
     ...
});

Существует также опция cache, которую вам необходимо установить в true, если ваш dataType равен jsonp или script. Это верно по умолчанию для других типов данных.

См. jQuery.ajax() документы для описания этих параметров.

2 голосов
/ 21 мая 2009

GET-запросы могут кэшироваться браузером (в зависимости от размера кэша браузера и т. Д.), Но POST не будет кэшироваться.

Привет.

1 голос
/ 21 мая 2009

Я думаю, что все ответы AJAX кэшируются, если вы не укажете не кэшировать. Вы также можете проверить jQuery Cache (?).

1 голос
/ 21 мая 2009

Установите соответствующие заголовки в ответе http, такие как заголовок Expires и директивы Cache-control.

См. здесь для более подробной информации, но в двух словах вы хотите установить заголовки, чтобы указать:

  • что ресурс должен быть кэширован в течение определенного времени (истекает заголовок)
  • что ресурс кешируется (Cache-control: public header)

При желании вы можете разрешить пользователю запрашивать файл, но отправлять обратно «неизмененный resposne», который экономит при повторной загрузке тела (для больших файлов). В этом случае вы должны использовать заголовки ответа, чтобы указать

  • Когда ресурс был последний раз изменен (последний измененный заголовок времени), что позволяет клиенту сообщать серверу, сколько лет версии
  • E-Tag файла, который является своего рода хеш-кодом, который позволяет серверу узнать, какая версия у клиента. Будьте осторожны с тем, как генерируются электронные теги ... на некоторых серверах etags нарушают балансировку нагрузки.

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

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