2010-01-14 8 views
0

Je développe un site Web dans ASP.NET et j'utilise divers frameworks/bibliothèques javascript. Les différents fichiers appartenant à ces frameworks/bibliothèques changent rarement, donc il n'y a aucune raison d'actualiser ces fichiers une fois qu'ils ont été envoyés au navigateur client (au moins pas à chaque fois qu'une page est servie).ASP.NET Spécifier les fichiers qui doivent être mis en cache

Je vois que l'objet HttpContext peut être utilisé d'une manière ou d'une autre, que je peux définir l'expiration du contenu sur les fichiers/dossiers sur IIS, ou peut-être configurer une mise en cache dans le fichier web.config.

. Quelle est la meilleure pratique/quelle approche devrais-je prendre?

Si l'expiration du contenu sur l'IIS fonctionne, alors c'est simplement génial (et facile). Mais au cours du développement, j'utilise le serveur de développement ASP.NET, qui n'interagit pas avec IIS externe -. Donc pas de gain de performance au cours du développement :(

Comment puis-je utiliser le cache ici (en fonction de la question 1)?

Je voudrais modifier cette question à utiliser comme « this-is-faire-son-fait » fil pour référence future pour moi et d'autres.

+1

Etes-vous par hasard sous Windows Vista avec IPv6 activé, cela provoque le ralentissement du serveur web de développement dans firefox. –

+0

@Jonas: Je suis sous Windows XP Pro, et les performances dans IE sont les mêmes. – Chau

+1

Ok. En tout cas, si j'étais vous, je développerais contre votre IIS local au lieu du serveur de développement si vous voulez vous concentrer sur les paramètres spécifiques au serveur tels que la mise en cache pendant le développement. Cela devrait être plus flexible et vous donner moins de différences entre vos configurations de développement et de production. –

Répondre

2

les paramètres du cache dans le HttpContext seul contrôle comment la page aspx est mise en cache, pas la mise en cache des fichiers que le navigateur inclut (javascript, css, images ...)

Le navigateur met en cache les fichiers javascript par défaut, et c'est à peu près la même, peu importe si vous utilisez le site localement ou en direct. Normalement, vous devez faire un Ctrl + F5 ou purger le cache si vous apportez des modifications dans un script pour que le navigateur charge la nouvelle version. Donc, vous n'avez rien à faire, le navigateur met déjà les fichiers en cache.

+0

En fait, je soupçonnais que ce que vous dites est vrai. Mais quand je regarde l'onglet NET dans FireBug, il prétend qu'il utilise au-dessus de 10s pour recevoir un fichier javascript de + 1 Mo - et c'est localement. L'en-tête de réponse pour ce fichier indique cache-control: private, et l'en-tête de la requête dit cache-control: max_age = 0. – Chau

1

Je pense que si vous cherchez la mise en cache des fichiers, alors cela doit être fait sur l'extrémité IIS. Vous pouvez essayer l'extension YSloy (par Yahoo) avec FireBug. C'est très bon et devrait être utilisé comme meilleure pratique. J'espère que ce sera utile :)

+0

YSlow est maintenant inclus dans mes outils de développement. En ce qui concerne les fichiers javascript et la mise en cache, YSlow se plaint de ne pas avoir de "date d'expiration éloignée", ce qui correspond au manque de mise en cache que je rencontre. – Chau

Questions connexes