2010-11-03 6 views

Répondre

30

L'option cache n'est pas un cache spécial que jQuery conserve, c'est peut-être un peu inapproprié.

  • cache: false Ajoute un horodatage à l'URL demandée, il forces le navigateur pour saisir une nouvelle copie, il est plus d'un cache-breaker.
  • cache: truene fait rien, la mise en cache native du navigateur est laissé à faire tout ce qu'il va faire ici.

Ce n'est pas une chose spécifique à jQuery, c'est la façon dont différents navigateurs choisissent de mettre en cache une réponse ou non. If your cache headers are set correctly dire le navigateur à le cache, alors il devrait. Cependant, IE aime cacher l'enfer hors des demandes même quand il n'y a aucune instruction d'en-tête à faire ... c'est vraisemblablement le comportement que vous voyez. Si c'est le comportement que vous voulez cependant, ajoutez les en-têtes de contrôle de cache (voir le lien ci-dessus) à vos pages que vous voulez mettre en cache dans d'autres navigateurs.

+1

Je pense que vos booléens sont en arrière. 'cache: false' ajoute la chaîne de requête d'horodatage, tandis que' cache: true' utilise par défaut le comportement du navigateur. – RANGER

+0

@cbh - oups vous avez raison, mis à jour! –

+0

Pourquoi l'op a-t-elle accepté la réponse? J'ai le même problème avec Chrome. Peu importe ce que je fais, je ne peux pas obtenir un 304 pour une requête ajax même si le serveur envoie correctement les en-têtes Etag et Last-Modified. Je reçois également un 304 en demandant l'URL directement à partir de la barre d'adresse mais pas d'ajax, donc ce n'est clairement pas un problème de serveur. – cap

Questions connexes