2010-11-24 1 views
2

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

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

Он будет извлекать страницы, которые были кэшированы, несмотря ни на что. Кто-нибудь знает, как это исправить? Спасибо заранее! EDIT: 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){ 

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

Последнее: я запрашиваю страницы не в манифесте из-за довольно большой серверной стороны. В манифесте не было бы всех страниц.

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

+0

я не думаю, что это так, только от сервера к серверным вызовам не идет второй раз, клиентские вызовы сервера должны работать. вы выполняете кеширование уровня страницы – kobe 2010-11-24 02:45:10

+0

, можете ли вы дать нам более подробную информацию, например, ваш код ajax, вызывающий бэкэнд. – kobe 2010-11-24 02:48:44

+0

Добро пожаловать в stackoverflow – 2010-11-24 02:52:16

ответ

1

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

+0

Как я могу его явно запросить? – Precursor 2010-11-24 02:49:15

0

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

$.ajax({ 
    cache: false 
}) 
0

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

if(navigator.appName == "Microsoft Internet Explorer") { 
     http = new ActiveXObject("Microsoft.XMLHTTP"); 
1

I мы пытались получить 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