Кэшированные страницы AJAX не работает

Всякий раз, когда страница кэшируется как в Firefox, так и в Webkit, она теряет все возможности ajax.

<html manifest=cache.manifest>
<head>
    <script src="js/jquery.js" type="text/javascript"></script>
    <script src="js/jqtouch.js" type="text/javascript"></script>

Он будет извлекать только те страницы, которые были кэшированы, несмотря ни на что. Кто-нибудь знает, как это исправить? Заранее спасибо! РЕДАКТИРОВАТЬ: Код Ajax:

    var http = false;
    if(navigator.appName == "Microsoft Internet Explorer") {
      http = new ActiveXObject("Microsoft.XMLHTTP");
    } else {
      http = new XMLHttpRequest();
    } 

  http.open("GET", "default.css", true);
http.setRequestHeader('CacheControl', "no-cache");
  http.onreadystatechange=function() {
    if(http.readyState == 4) {
      alert('4(good):'+http.responseText);
    }
  }
  http.send(null);

Также используя jquery $.ajax для запроса. Ни работы. JQuery:

    $.ajax({

    url: site_url,

    cache: false,

    dataType: 'html',

    data: ({uuid : devid}),

    success: function(response){

Они всегда говорят об успешном выполнении, но возвращают данные только в том случае, если страница кэширована. В противном случае они возвращают ноль "".

И последнее: я запрашиваю страницы не в манифесте из-за довольно большого бэкенда на стороне сервера. Было бы невозможно иметь все страницы в манифесте.

По сути, как мне получить доступ к страницам НЕ в манифесте на AJAX на том же сайте. Всякий раз, когда я пытаюсь в настоящее время, он всегда возвращает ноль. вернуть 03:11:41, даже без кеша и т.д.


person Precursor    schedule 24.11.2010    source источник
comment
я так не думаю, только вызовы сервер-сервер не идут во второй раз, вызовы клиент-сервер должны работать. Вы выполняете кэширование на уровне страниц?   -  person kobe    schedule 24.11.2010
comment
Можете ли вы предоставить нам более подробную информацию, например, ваш код вызова ajax.   -  person kobe    schedule 24.11.2010
comment
добро пожаловать в stackoverflow   -  person Ben Rowe    schedule 24.11.2010


Ответы (4)


Это не правда. Если вы явно запрашиваете данные со страницы, она повторно загружает их для вас. Вы можете проверить это, открыв Firebug или окно отладки Chrome и наблюдая, как браузер делает http-запрос.

person Mikhail    schedule 24.11.2010
comment
как бы я явно запросить это? - person Precursor; 24.11.2010
comment
@precurson, что вызывает код, javascript или серверный код... если javascript, вы можете открыть панель firebug, .net и посмотреть результаты. - person kobe; 24.11.2010
comment
Я не понимаю, вы используете jquery или пишете свои собственные вызовы XMLHTTP? - person Mikhail; 24.11.2010
comment
Обычно JQuery, я использовал только XMLHTTP для отладки проблемы, так как я лучше знаком с ним. Пока я безуспешно - person Precursor; 24.11.2010

Я пытался заставить cache.manifest работать некоторое время, и он продолжал давать мне подобные ответы. У меня есть мобильное приложение jquery, которое использует веб-службу для получения данных и не работало, пока я не добавил веб-службу в раздел NETWORK моего файла cache.manifest.

    CACHE MANIFEST
    # This is a comment.
# Cache manifest version 0.1.3.5
# If you change the version number in this comment,
# the cache manifest is no longer byte-for-byte
# identical.




NETWORK:
# All URLs that start with the following lines
# are whitelisted.

Service.svc

CACHE:
# Additional items to cache.

src/jquery-1.6.2.min.js
src/jstorage.min.js
src/jquery.numeric.js
src/jquery.format-1.1.min.js
assets/json2.min.js
assets/jquery.signaturepad.css
assets/jquery.signaturepad.min.js
jquery.mobile-1.0b2/jquery.mobile-1.0b2.min.css
jquery.mobile-1.0b2/jquery.mobile-1.0b2.min.js
jquery.mobile-1.0b2/images/ajax-loader.png
jquery.mobile-1.0b2/images/icon-search-black.png
jquery.mobile-1.0b2/images/icons-18-black.png
jquery.mobile-1.0b2/images/icons-18-white.png
jquery.mobile-1.0b2/images/icons-36-black.png
jquery.mobile-1.0b2/images/icons-36-white.png
src/link-1-3.js
src/events-1-3.js
src/custom-styles.css
Login.html
person Geoff    schedule 24.08.2011
comment
Мои URL-адреса AJAX имеют формат MVC: http://host/Controller/Action/ Указание /Action/, /Action или /Action/* не работает. Что-нибудь еще я могу попробовать? - person Mr. TA; 08.08.2013

по умолчанию функции jquery ajax будут получать данные (за исключением json и jsonp). Вы можете указать вызову ajax не кэшировать, используя следующее:

$.ajax({
  cache: false
})
person Ben Rowe    schedule 24.11.2010
comment
я никогда не упоминал cache false ни в одном из своих кодов, но он всегда делает вызовы. любые входные данные - person kobe; 24.11.2010
comment
Это не работает, так как проблема в кеше приложения, а не в обычном кеше браузера. Ваше предложение решает проблемы с кешем браузера. - person Mr. TA; 08.08.2013

Приведенный ниже код в IE выполняет вызов сервера, поскольку вы кешируете его, а не выполняете последующие вызовы...

if(navigator.appName == "Microsoft Internet Explorer") {
      http = new ActiveXObject("Microsoft.XMLHTTP");
person kobe    schedule 24.11.2010