12
votes

Supprimer le manifeste HTML5 AppCache, en permanence

I Configurez un cache d'application sur un site et peu de temps après la réalisation de sa manière plus agressive que j'ai réalisée. Je veux le supprimer. En permanence.

J'ai lu que passer un fichier manifeste modifié, complètement vide, avec le mimeType correct supprimera le cache. edit: voir ci-dessous. La réponse de Maurice est la seule solution cohérente.

Est-ce la solution la plus rapide et la plus efficace? Y a-t-il une meilleure façon?

Et si vous pouvez spécifier si vous avez utilisé ou non cette fonctionnalité avant votre réponse, je l'apprécierais vraiment - une documentation ambiguë et originale qui ne se présentait pas pendant les tests est ce qui m'a eu dans cette situation.


0 commentaires

4 Réponses :


19
votes

L'astuce consiste à changer d'abord l'URL manifeste de votre page HTML à quelque chose d'invalide afin que le navigateur recevra un 404 lors du chargement. Assurez-vous également de modifier également le manifeste d'origine sinon la nouvelle page HTML n'est jamais téléchargée. Une fois que le navigateur a omis de télécharger la nouvelle URL Manifest, vous pouvez supprimer complètement le paramètre Manifeste de la page HTML.

type de louche mais qui semble être le seul moyen fiable d'éliminer une référence manifeste existante.


5 commentaires

Donc, je veux réellement définir , ne pas supprimer l'attribut?


Faites-le en premier et apportez une modification au manifeste d'origine ou la page ne sera pas téléchargée et rafraîchissez la page. Cela va briser le lien manifeste et après cela, vous pouvez supprimer l'attribut manifeste.


J'ai compris. Merci beaucoup pour votre aide.


@ Maurice fait que l'URL manifeste doit être modifiée ou l'URL manifeste d'origine vient de retourner un 404 à la place?


Juste retourner un 404 de l'URL d'origine doit être suffisamment bonne.



2
votes

J'ai eu un problème similaire où j'avais besoin de réinitialiser l'AppCache après une mise à jour échouée (c'est-à-dire une suppression complète de l'AppCache afin qu'elle puisse être ré-construite à partir de zéro).

Bâtiment sur la réponse de Maurice Je présente l'utilisateur avec une liaison normalement cachée qui ouvre une page non mises en cache, qui écrit simplement un cookie et retourne l'utilisateur à la vue précédente. Ce cookie indique au serveur de renverser un 404 la prochaine fois que l'AppCache est demandé et l'utilisateur est ensuite effectué via le processus de connexion normal. Lorsque la demande suivante exécute avec succès, il efface le cookie et la mise en cache cède comme normale.

Utiliser un cookie de cette manière se déplace des problèmes dans lesquels la version maître de la vue est bloquée dans l'AppCache, ce qui rend difficile l'injection d'une URL de casse dans Manifest = "" C'est-à-dire que l'URL manifeste reste la même, mais le serveur répond avec un 404 jusqu'à ce qu'il soit dit autrement.


2 commentaires

Intéressant. Bien que si vous voulez finalement à garder AppCache, vous pouvez simplement modifier le manifeste, ce qui entraînera le navigateur de réaménager tous les actifs comme s'il recommence. Pour se débarrasser du manifeste de façon permanente, Maurice était correcte.


Ma suggestion n'est vraiment que pour les applications derrière une connexion, où vous pouvez avoir des difficultés à déclencher une mise à jour réussie en utilisant les procédures normales (modification du manifeste, etc.).



4
votes

Si vous voulez juste que ce soit retiré de votre côté, vous pouvez le faire à partir du navigateur. Je ne peux que me rappeler comment le faire en chrome. Allez à Chrome: // AppCache-Internals / & Supprimer le (s) fichier (s) souhaité (s). Vous pouvez également effacer le cache et les cookies et cela devrait fonctionner. Je ne teste cependant que dans Chrome.

Si vous voulez le supprimer pour tous les téléspectateurs, je ne sais aucun moyen de détecter s'ils ont une vieille version mises en cache, mais je sais que garder l'attribut avec un faux lien, comme Maurice suggéré, serait la seule façon de Je saurais savoir; Cependant, je suis sûr qu'il y a un autre moyen, probablement avec JQuery.


1 commentaires

La seule solution qui m'a aidé! Merci!



9
votes

A partir du 26/06/2015 J'ai trouvé que le retour d'un 404 ne fera pas effacer le AppCache existant pour Firefox et renvoyer un AppCache vide n'effacera pas le AppCache existant pour Chrome. Renvoyer le AppCache ci-dessous semblait fonctionner dans IE, Chrome, Safari et Firefox, bien qu'il ne soit pas clair par quel mécanisme la désactivation de la mise en cache «implicite» de Index.html est accomplie.

NETWORK:
*

CACHE:
FALLBACK:


2 commentaires

Cela devrait être accepté comme la réponse correcte. Merci de partager cela!


Le cache doit Démarrer avec MANIFEST , puis une nouvelle ligne à spécifier. En ce qui concerne "la désactivation de la« mise en cache d'index.html »implicite, la seule solution que je connaisse est d'inclure une iframe cachée et de déclarer le manifeste dans l'iframe (la page de l'iframe sera ensuite mise en cache). Je n'ai pas vraiment essayé cela, mais je l'ai lu comme une solution.