2010-11-24 4 views
2

Chaque fois qu'une page est mise en cache dans Firefox et Webkit, elle semble perdre toutes les fonctionnalités ajax.Pages mises en cache AJAX ne fonctionnant pas

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

Il récupérera uniquement les pages qui ont été mises en cache, quoi qu'il arrive. Quelqu'un sait comment réparer ceci? Merci d'avance! EDIT: Ajax Code:

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); 

utilisant également jquery .ajax de $ pour la demande. Aucun travail. JQuery:

$.ajax({ 

    url: site_url, 

    cache: false, 

    dataType: 'html', 

    data: ({uuid : devid}), 

    success: function(response){ 

Ils disent toujours avec succès, mais seulement le retour des données si la page est mise en mémoire cache. Sinon, ils renvoient null "". Une dernière chose: je demande des pages qui ne figurent pas sur le manifeste, en raison d'un backend côté serveur assez important. Il ne serait pas possible d'avoir toutes les pages dans le manifeste.

Fondamentalement, comment pourrais-je accéder aux pages PAS sur le manifeste sur le même site AJAX. Chaque fois que j'essaie actuellement, il retourne toujours null. return 03:11:41, même avec no-cache, etc.

+0

je ne pense pas, seulement Les appels de serveur à serveur ne vont pas une seconde fois, les appels du client vers le serveur devraient fonctionner. faites-vous la mise en cache pagelevel – kobe

+0

pouvez-vous nous donner plus de détails comme votre backend d'appel de code ajax. – kobe

+0

bienvenue à stackoverflow –

Répondre

1

Ce n'est pas vrai. Si vous demandez explicitement des données à partir d'une page, il les télécharge à nouveau pour vous. Vous pouvez vérifier cela en ouvrant Firebug, ou la fenêtre de débogage de Chrome et regarder le navigateur faire une demande http.

+0

comment le demanderais-je explicitement? – Precursor

+0

@precurson, ce qui appelle le code, javascript ou le code serveur ... si javascript vous pouvez ouvrir firebug, panneau .net et voir les résultats. – kobe

+0

Je ne comprends pas, utilisez-vous jquery ou écrivez-vous vos propres appels XMLHTTP? – Mikhail

0

par défaut les fonctions ajax de jquery seront les données qu'il reçoit (sauf pour json & jsonp). Vous pouvez dire à l'appel ajax ne cache en utilisant les éléments suivants:

$.ajax({ 
    cache: false 
}) 
+0

je n'ai jamais mentionné le cache faux dans aucun de mon code, mais il fait toujours les appels. Toutes les entrées – kobe

+0

Cela ne fonctionne pas, car le problème est le cache de l'application, pas le cache du navigateur ordinaire. Votre suggestion aborde les problèmes de cache du navigateur. –

0

Le code ci-dessous dans IE fait un appel de serveur, comme vous en mémoire cache son ne pas faire les appels suivants ...

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

I J'ai essayé de faire en sorte que cache.manifest fonctionne depuis un moment maintenant et ça m'a toujours donné des réponses similaires. J'ai une jquery application mobile qui utilise un service Web pour obtenir ses données et ne fonctionnait pas jusqu'à ce que j'ajouté le service Web dans la section RESEAU de mon fichier 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 
+0

Mes URL AJAX sont au format MVC: 'http: // hôte/Contrôleur/Action /' Spécification '/ Action /' ou '/ Action' ou'/Action/* 'ne fonctionnent pas. Autre chose que je peux essayer? –

Questions connexes