Как предотвратить кеширование из jQuery Ajax? - PullRequest
3 голосов
/ 09 июня 2010

Может ли кто-нибудь помочь мне с этим? У меня есть веб-страница, использующая .manifest для кэширования автономного хранилища. На этой странице я использую jQuery ajax call для получения данных с сервера. Если я сначала загружаю страницу, все в порядке. Я могу переключаться между Online и Offline. Но проблема в том, когда я снова в сети и обновляю страницу. JQuery AJAX больше не может общаться с сервером. Есть ли способ для ajax пообщаться с сервером или очистить автономный кеш?

Мой вызов ajax таков:

        $.ajax({

            type: "GET",

            url: requestUrl,
            success: localSuccess,

            error: error,

            dataType: "text",
            cache:false
        });

Ответы [ 3 ]

5 голосов
/ 09 июня 2010

У меня есть этот код в верхней части каждой страницы / главной страницы

    //Disable caching in IE, becuase it's EVIL!
    $(document).ready(function () {
        $.ajaxSetup({ cache: false });
    });
0 голосов
/ 06 июня 2013

Я знаю, что очень очень опаздываю на эту вечеринку, но просто чтобы поставить ее там. И мне жаль воскрешать этот вопрос из земли зомби. В сафари и некоторых старых браузерах (из того, что я испытывал до сих пор, cache:false, похоже, иногда не работает). для более кроссбраузерно-совместимого решения вы можете добавить опцию data к вызову ajax () и добавить генератор случайных чисел в качестве параметра. Было бы что-то вроде этого.

 var callback = function () {
   $.ajax({
      type: "GET",
      url: requestUrl,
      success: localSuccess,
      error: error,
      dataType: "text",

      //won't work sometimes
      cache:false,

      //start random number generator
      data : { r: Math.random() }
     //end random number generator
   });
  }

Таким образом, каждый раз, когда происходит серверный вызов, будет генерироваться новое случайное число, и, поскольку данные отличаются от предыдущих запросов, ajax-запросы не будут кэшироваться и будут обеспечивать новый вызов сервера каждый раз. И на вашем сервере вы можете игнорировать эту переменную r.

0 голосов
/ 09 июня 2010

поместите случайную строку в URL, например, "get.php? Random =" + Math.random () "может решить эту проблему. Это не лучшее решение, но оно прекрасно работает.

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