comment cache de css, les images et les js?
Je voudrais avoir les images, css, javascript et la mise en cache côté client sur leur navigateur lorsqu'ils chargent une page web. Il ya tellement de différents types de mise en cache je suis confus quant à ceux qui à utiliser avec asp.net mvc.
Serait-il également possible d'avoir leurs navigateurs pour vérifier les nouveaux ou des versions modifiées de ces fichiers?
Merci!
Vous devez vous connecter pour publier un commentaire.
Navigateurs prendre soin de cela pour vous automatiquement, en fait. Vous devez sortir de votre façon de les obtenir pour PAS de mémoire cache de css, js, html et des images.
Je ne suis pas familier avec l'ASP MVC, mais je crois que ce type de mise en cache que vous pensez est le cache d'opcode pour votre sortie dynamique côté serveur?
Vous avez besoin de définir des en-têtes sur le serveur. Ce faire, vous pouvez coller dans votre site web.config:
Ce serait de dire au navigateur maintenant à même de vérifier de nouveau contenu sur quelque chose de statique pendant 30 jours.
Pour votre deuxième question, de prévoir un mécanisme de l'ajout d'une chaîne de requête de contenu. Dans mon projet actuel, nous avons compresser et de les combiner et de javascript et de css dans le cadre de la construction. Lors de la mise en liens dans la page ressemble à:
La chaîne de requête est le principal.Mineure.0.Certain nombre de modifications et de changements à tout moment, nous pousser à construire, provoquant le client à re-chercher. Exactement la même chose qui se passe sur les feuilles de style dans leur
<link>
élément.-1.00:00:00
serait de demander au navigateur de ne pas mettre en cache js, css et les images? toutes les ressources? J'avais besoin de ne pas mettre en cache quoi que ce soit.@Paul Creasey et @Salsa sont tous les deux corrects que les navigateurs vont gérer la mise en cache par défaut, tant que le lien est le même.
Comme vous l'avez mentionné, cela pose un problème lorsque vous devez mettre à jour les fichiers que vous n'avez aucune garantie que le navigateur du client vérifie si une version mise à jour. Dans de nombreux cas, ils ne font de ce après un certain laps de temps qui peut créer un minable expérience utilisateur.
Il y a un certain nombre de questions déjà posées sur ce site à la façon de traiter les alertes, les navigateurs client à actualiser le cache. En bref, ils reposent tous sur la modification d'un lien lorsque vous modifiez le contenu du fichier.
Vous pouvez ajouter un paramètre à l'URL qui sera utilisée uniquement pour la mise en cache des fins telles que:
Alors il suffit de changer le numéro de version lorsque vous modifiez le contenu et la nécessité de forcer un client, de réactualiser ala cette réponse.
Prendre un coup d'oeil à la la réponse que j'ai posté ici pour une solution qui maximise les avantages de l'utilisation de la mise en cache et évite tous les problèmes avec le besoin des utilisateurs de 'dur' refresh (Ctrl+F5).
Il utilise un hachage MD5 du contenu lui-même dans l'URL, de sorte que l'URL reste la même tant que le fichier est le même, qui est vraiment l'objectif. Le calcul de la valeur de hachage est super rapide, et il est mis en cache dans la mémoire sur le serveur, donc le rendu de la page n'est pas sensiblement ralentie. Le tout est exprimé en microsecondes, et les avantages ont été (sur mon site pour les plongeurs) impressionnant jusqu'à présent. Je l'applique à toutes les images, CSS et JS à l'exception des images dans des fichiers CSS comme ils ne sont pas générés par le serveur sur mon site (encore).
C'est mieux de le faire IIS ou dans votre fichier de config - assurez-vous que votre CSS/JS/images ensemble pour ne jamais expirer.
Lorsque vous faites référence à eux à partir de votre code, je suggère l'ajout d'une version ou la date du nom de fichier, par exemple de script.js?20100120, de sorte que lorsque vous faites venir autour de les modifier, il vous suffit de changer la version de forcer une actualisation de tous les navigateurs qui ont mises en cache.
Mise en cache côté Client est pris en charge automatiquement par les navigateurs lorsque vous réglez correctement -Tête Cache-Control et jeu web.config. Comme ça :