iPad кеширует ответы AJAX несмотря на настройку «Нет магазина» - PullRequest
4 голосов
/ 14 июля 2011

У меня есть страница, которая выполняет запрос AJAX для получения данных, которые затем изменяются пользователем. При использовании iPad, если пользователь вносит изменения, затем уходит со страницы, а затем возвращается - запросы AJAX не запускаются повторно - это означает, что старые данные загружаются (предположительно из кэша браузера iPad).

Мой код сервера - ASP.NET Forms, и я попытался не устанавливать кеш со всеми настройками, которые я могу найти:

Context.Response.Cache.SetNoStore()
Context.Response.Cache.SetETag(New Guid().ToString())
Context.Response.Cache.SetExpires(New DateTime())
Context.Response.Cache.SetNoServerCaching()
Context.Response.Cache.SetCacheability(HttpCacheability.NoCache)
Context.Response.Expires = 0

Но не повезло. Есть идеи?

Ответы [ 2 ]

5 голосов
/ 09 января 2012

Как было предложено в предыдущем ответе, jQuery предоставляет простой параметр кеш для его $. Ajax метод :

Если установлено значение false, онозаставит запрошенные страницы не кэшироваться браузером.Если для кеша установлено значение false, к URL-адресу также добавляется параметр строки запроса "_ = [TIMESTAMP]".

Например,

$.ajax({
  url: "test.html",
  cache: false,
  success: function () {
    $(this).addClass("done");
  }
});

Если вы не используетеjQuery вы можете реализовать подобное поведение самостоятельно.

0 голосов
/ 14 июля 2011

Мое текущее исправление состоит в том, чтобы постоянно (слегка) изменять URL-адрес запроса AJAX:

url: "/AjaxService.asmx/" + methodName + "?dt=" + new Date().getTime()

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

Конечно, это не лучшее решение!

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