По умолчанию данные, загруженные с сервера (данные JSON или XML) будут сохранены в кеше браузера, но не будут использоваться при следующем запросе. Причина в том, что по умолчанию jqGrid реализует такое же поведение запросов ajax, как параметр cache:false
в jQuery.ajax. Это означает, что у всех запросов есть дополнительный параметр nd
, например nd=1286296925096
, который является отметкой времени. Это делает URL-адрес всех запросов GET уникальным, и поэтому локальные сохраненные данные не будут использоваться дважды. Итак, если вы хотите, чтобы jqGrid не использовал данные из локального кеша браузера, вам не нужно ничего делать.
Если вы хотите дополнительно запретить сохранение данных локально (например, из соображений безопасности или для уменьшения заполнения локального кеша информацией, которая никогда не будет использоваться), вы можете включить no-store в HTTP-заголовке ответа сервера.
Если вы хотите кэшировать запросы сервера и использовать данные, вам следует prmNames: { nd:null}
jqGrid вариант. Тогда данные из следующих запросов можно будет получить из локального кеша браузера. Если вы это сделаете, я рекомендую вам включить в HTTP-заголовок ответа сервера Директивы Cache-Control, которые заставляют использовать нужное вам поведение кеширования. Например, я лично использую Cache-Control: max-age=0
и использую ETag
с хешем отправленных данных. Таким образом, все запросы ajax будут отправлены на сервер для повторной проверки локального кеша. Все запросы будут автоматически содержать If-None-Match
HTTP-заголовок с ETag
данными из локального кеша. Если данные не изменены, сервер может ответить HTTP/1.1 304 Not Modified
без тела вместо HTTP/1.1 200 OK
с телом, содержащим данные. Ответ HTTP/1.1 304 Not Modified
позволяет браузеру использовать локальный кеш.
ОБНОВЛЕНО: я дополнительно использую Cache-Control: private
, который отключает кеширование данных на прокси-сервере и объявляет, что данные могут быть кэшированы, но не переданы другим пользователям.
Если вы хотите узнать больше об управлении кешированием в отношении заголовков HTTP, я рекомендую вам прочитать следующее Руководство по кешированию а>.
07.10.2010
http://...
, будет использовать протокол HTTP для загрузки соответствующей HTML-страницы. Вы можете использовать Fiddler или инструменты разработчика IE / Chrome (нажмите F12, чтобы запустить и перейти на вкладку «Сеть»). сделать трассировку сети (а точнее трассировку HTTP). Если вы используетеprmNames: { nd: null }
иmtype: "GET"
, у вас могут возникнуть проблемы с Internet Explorer (особенно в старых версиях), потому что он будет кэшировать старые запросы и не будет отправлять новые запросы на сервер. 28.08.2015Cache-Control: private, max-age=0
в ответе сервера. Дополнительно можно использоватьprmNames: { nd: null }
для удаления абсолютно ненужного параметра.Cache-Control
является частью стандарта HTTP, и все веб-браузеры будут отправлять новый запрос Ajax на сервер, а не просто получать предыдущий запрос из кеша веб-браузера. Это самый чистый способ. 28.08.2015