2011-01-27 2 views
0

Avez-vous déjà eu un manifeste de cache HTML fonctionnant comme prévu dans Chrome? J'ai mis un petit projet ensemble et apparemment ça ne marche pas bien. Cela fonctionne-ish!Le comportement du manifeste dans chrome n'est pas stable

J'ai créé une page HTML comme ceci:

<html manifest="cache.manifest"> 
<body> 
test - <img src="img1.jpg" width="100" height="100"> 
</body> 
</html> 

Un manifeste comme ceci:

CACHE MANIFEST 
#V1.0.22 
img1.jpg 

NETWORK: 
* 

Et 2 images dans le même dossier: img1.jpg et img2.jpg. Lorsque j'échange mes images, img2 => img1 et que je mets à jour le numéro de version de mon manifeste, Chrome télécharge la nouvelle version et envoie l'événement de mise à jour. Quand je recharge la page, je reçois ma deuxième image à l'écran, ce qui est attendu. Bien que, si j'écrase le img1 avec l'image originale, mettre à jour le numéro de version dans le manifeste et recharger, Chrome télécharge le nouveau manifeste et le nouveau fichier mais même si je rafraichis la page encore et encore il n'affiche pas la bonne image! ! Si j'efface le cache à ce moment-là, j'obtiens le bon, ce à quoi je m'attendrais aussi. J'ai fait 10 fois et ça ne marche pas. Ça me rend fou! Il semble que le remplacement du cache ne fonctionne pas correctement!

Si vous avez une idée à ce sujet s'il vous plaît dites-moi. Je peux même vous envoyer mes fichiers par email si vous le souhaitez.

Cheers.

+0

Salut, avez-vous obtenu n'importe où avec ceci? J'ai le même problème ... – Journeyman

+0

De quel environnement de développement/production travaillez-vous? J'ai rencontré un comportement différent entre VS2010 et IIS s'exécutant sur un serveur Web. IIS est bien, mais VS2010 semble causer des problèmes de cache. – Journeyman

Répondre

0

Il s'agit très probablement d'une mauvaise interaction entre la mise en cache cache.manifest et la mise en cache normale du navigateur. Lorsque vous utilisez cache.manifest, votre navigateur suit également les règles normales de mise en cache du navigateur dans vos en-têtes http. Donc, ce qui se passe, c'est que vous servez une image et son en-tête dit qu'il est correct de le mettre en cache pendant quelques heures ou quelques jours. Il est également mis en cache par cache.manifest. Vous mettez à jour votre image sur le serveur et modifiez votre numéro de version cache.manifest. Le navigateur voit la version changer, efface le cache.manifest et demande à nouveau l'image comme d'habitude. Mais comme d'habitude, en demandant l'image, il vérifie d'abord le cache du navigateur, et il retire l'ancienne image de là au lieu de saisir celle du serveur. Ensuite, il colle cette ancienne image dans cache.manifest. Ainsi, même après l'expiration du cache pour l'image dans le cache du navigateur, l'image ne sera toujours pas mise à jour car elle est à nouveau mise en cache dans le cache.manifest. En résumé, cache.manifest et la mise en cache normale du navigateur créent une combinaison vraiment épouvantable. Vous devez donc désactiver la mise en cache du navigateur pour tout ce que vous mettez dans un fichier cache.manifest. Vous pouvez le faire sur votre serveur en changeant les en-têtes de cache.

Questions connexes