Question

Pour des raisons de performance, je veux avoir quelques-unes de mes pages Web utilisent des ressources qui ont été mises en cache pour une utilisation en mode hors connexion (images, CSS, etc.), mais de ne pas avoir la page elle-même cache que le contenu sera généré dynamiquement.

Une façon de le faire serait de remanier mes pages afin qu'ils se chargent du contenu dynamique via AJAX ou en regardant les choses dans LocalStorage. Les détails peuvent varier, mais grosso modo, quelque chose comme ça.

S'il est possible, je préférerais trouver un moyen simplement d'indiquer au navigateur d'utiliser les ressources mises en cache (encore une fois, des images, CSS, etc.) pour la page, mais de ne pas mettre en cache en fait le contenu HTML (généré dynamiquement) lui-même .

Est-il possible de le faire avec HTML5 hors ligne AppCache? Je suis sous l'impression que la réponse est « non » parce que:

  • Toute page qui inclut le manifeste seront mises en cache donc je ne peux pas préciser les ressources mises en cache dans la page elle-même.
  • Il n'y a aucun moyen de dire une page précédente « utiliser les actifs hors ligne pour cette autre page, mais ne cache pas réellement le code HTML sur cette page ». Vous devez spécifier la page elle-même, ce qui signifie sera mis en mémoire cache le code HTML.

Ai-je tort à ce sujet? Il semble que il y a probablement une certaine façon délicate (ou pas si difficile) autour de cela. Maintenant que je l'ai tapé, je me demande si y compris la page explicitement dans la section NETWORK du manifeste AppCache fera l'affaire.

Était-ce utile?

La solution

Ma réponse est "oui".

Je travaille sur une application web où j'ai énuméré toutes les ressources nécessaires dans le manifeste, et fixer la section NETWORK à *.

Le manifeste est alors inclus uniquement sur la page principale d'atterrissage. Donc, toutes les ressources sont mises en cache la première fois que vous visitez le site et il fonctionne un régal.

En bref,

  • une de vos pages doit inclure le manifeste et sera donc mis en cache.

    peut-être vous pouvez avoir chargé le manifeste dans un iframe et ne pas avoir toute la page mise en mémoire cache, juste une pensée.

  • Liste toutes vos ressources pour être mises en cache dans la section CACHE

  • définir la section NETWORK à *

Autres conseils

Je suis assez certain que la réponse à cette question est non. Si vous utilisez la section Réseau dans Chrome, il montre que les ressources sont chargées à partir du cache et qui sont chargés à partir du serveur. J'ai essayé de régler le AppCache comme décrit ci-dessus et les ressources sont toujours chargées à partir du serveur. Ai-je raison de supposer que si la page en cours est pas dans le AppCache alors il l'habitude de la peine de vérifier dans le AppCache pour l'une des ressources?

Ce que j'ai trouvé qui fonctionne est de lister les fichiers que vous ne voulez pas mises en cache dans AppCache dans le réseau: la section du manifeste. Pour moi, cela signifiait ajouter * .asp * à la section du réseau. Maintenant, aucun des fichiers asp classiques, ou des fichiers ASPX sont mises en cache.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top