IIS et le contenu Statique?
Selon Ultra-Rapide ASP.NET Chapitre 3 - la mise en Cache:
Fichiers que le navigateur récupère sur le serveur devrait être stockés dans
le cache du navigateur aussi longtemps que possible pour aider à réduire le serveur
d'aller-retours.
-
Mais comment fait-IIS savent ce qu'est un contenu statique est réellement et ne l'est pas?
Est-il seulement les images, CSS, JS et pas ASPX, ashx...?
Où peut-on voir dans IIS ce qui est déjà considéré comme statique et ce n'est pas ?
-
Quel est le scénario où une page a été déclaré auprès de
<%@ OutputCache
en-tête (sanslocation
)? Sont lesimages
,CSS
etJS
fichiers source à l'intérieur d'elle aussi être mise en cache de sortie avec les mêmes propriétés? -
Comme une meilleure pratique, je dois définir un an, dans l'avenir, car le maximum de temps d'expiration. Je devrais utiliser comme valeur par défaut pour l'ensemble du contenu statique sur le site
J'ai donc fait ceci :
Mais plus tard, après avoir appuyé sur OK
, je ne pouvez pas trouver un résumé menu qui me montre: à qui j'ai déjà mis un en-tête de réponse (dans ce cas: le css
dossier).
Actuellement, dans le but de voir que css
dossier a été appliqué avec des en-têtes de réponse - je dois aller à la css
dossier nouveau -->
- Tête de Réponse Http-->
Communes aux en-Têtes de -->
et puis je le vois. Il n'est pas écrit dans le web.config.
Mais si je le fais pour un fichier (Login.aspx
par exemple): je ne vois dans le web.config:
<configuration>
<location path="Login.aspx">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseExpires" cacheControlMaxAge="1.00:00:00" httpExpires="Fri, 15 Feb 2013 00:00:00 GMT" />
</staticContent>
</system.webServer>
</location>
</configuration>
- alors que les deux
UseExpires
etUseMaxAge
comme l'a fait ici, j'obtiens 500 erreur interne du serveur, votre solution de travail, peut-on utiliser les deux ? parce que je vois de dépassement de pile à le faire pour leur css et js, etc, mais ne savez pas comment ?
Vous devez vous connecter pour publier un commentaire.
Je comprends votre situation. Parfois, sa confusion comment IIS gère un fichier. Ses différentes pour IIS 6 vs IIS 7 pour de Classique les Pools d'Application et le mode Intégré les pools d'application. Mon expérience est surtout Intégré avec les Pools d'applications IIS 7.5, donc c'est l'environnement, je peux faire des commentaires sur la manière la plus précise.
Première Question
Vous pouvez consulter la liste des gestionnaires de fichiers dans IIS en accédant à votre site web, puis cliquez sur "Gestionnaire de Cartographies". Par défaut, ce sont héritées de l' .Net web de la base.config qui est dans un emplacement différent en fonction de votre .Net framework version.
Si un fichier demandé n'est pas déjà explicitement mappé à un autre gestionnaire, il appartient à un fourre-tout gestionnaire (
*
) comme la dernière option (System.Web.DefaultHttpHandler
) qui détermine si c'est un fichier statique ou un répertoire de la navigation de la demande. Si les fichiers Statiques sont tout simplement des fichiers qui n'est pas lié à un autre gestionnaire déjà. Par exemple, vous verrez que*.aspx
est déjà mappé àSystem.Web.UI.PageHandlerFactory
avant ce gestionnaire par défaut. Donc sa va être traitée par le gestionnaire et ne pas être considéré comme un fichier statique. Si vous avez supprimé que la cartographie de vous pourrait techniquement servir *.aspx comme un fichier statique si tu voulais vraiment (juste pour la preuve de la façon dont il fonctionne).Mais vous pouvez aussi explicitement la liste un type de fichier comme un fichier statique par l'ajout d'une entrée dans votre site web.config httpHandlers la section de cartographie les extensions de fichier à
System.Web.StaticFileHandler
dans IIS. Par exemple:Cet exemple est à l'aide de la
<system.webServer>
section de configuration, de sorte que son pour un Pool d'applications s'exécutant dans Mode Intégré.Deuxième Question
Pas. Parce que la page est en cours de serveur comme une demande distincte (peut-être même par un gestionnaire distinct), il peut avoir totalement différents en-têtes de cache/conseils. La page d'accueil et les ressources qu'il peut utiliser ne sont pas liés à partir d'un point de vue de la mise en cache.
En fait, vous pourriez même avoir une courte période de cache pour *.html et une plus longue période de cache pour *.jpg ou *.png? Quelque chose à considérer.
Troisième Question
Hmm... je ne pourrais pas aller jusqu'à un an. Comment environ un mois? Je voudrais définir une politique globale comme ceci:
C'est la même chose que l'exemple montré ci-dessus, mais n'est pas à l'intérieur d'un
<location>
élément, au lieu de cela, il est juste à la racine<configuration>
élément de sorte qu'il est la politique par défaut. Encore une fois c'est pour un Pool d'applications s'exécutant dans Mode Intégré. Parfois vous devez également activer:Cela fait juste assurez-vous que les fichiers statiques sont traitées par le biais de la gestion gestionnaire de fichier statique qui respecte la configuration ci-dessus des éléments.
Modifier pour tenir compte des Commentaires
La documentation de la boîte de dialogue de configuration que vous avez posté au-dessus se trouve ici: Configurer le HTTP Expire en-Tête de Réponse (IIS 7)
Apparemment, ces paramètres sont enregistrés dans C:\Windows\System32\inetsrv\config\applicationHost.config
Je n'ai pas IIS7 et développer personnellement sur IIS 7.5. Donc, s'il vous plaît poster un commentaire si vous le pouvez vérifier cet emplacement est précis!
C:\Windows\System32\inetsrv\config\applicationHost.config
. Ouvrez ce fichier et de recherche pour les paramètres que vous recherchez. Encore une fois je ne peux pas confirmer IIS7, de sorte s'il vous plaît poster un commentaire ici si c'est un succès!runAllManagedModulesForAllRequests="true"
? Vous avez dit que, parfois, vous devez l'activer, mais comment voulez-vous déterminer à quel moment?UseExpires
etUseMaxAge
comme l'a fait ici, j'obtiens 500 erreur interne du serveur, peut-on utiliser les deux ? parce que je vois de dépassement de pile à le faire pour leur css et js, etc, mais ne savez pas comment faire ?System.Web.StaticFileHandler
pour une extension de fichier lorsque tous les fichiers statiques qui ne sont pas associées à une certaine gestionnaire, pdf, txt, csv, png, jpg ... va enfin être mappé à la StaticFileHandler de toute façon ? Quelle est la différence lors de l'exécution de cette fonction avec conditionintegratedMode
vsmanagedHandler
?Cache-Control Header
pour mettre en cache sur le navigateur client ordinateurs.web.config
comme vous le dites. Les commandes que vous ajoutez sur le web.config et le souci de l'IIS, n'ont rien à voir avec asp.net il l'auto, mais l'IIS, IIS et sauve sa configuration dans un fichier différent, de sorte que lorsque vous changez de mettre en cache en-têtes de contrôle direct sur IIS, vous ne les voyez pas sur le web.config.<%@ OutputCache
sur un contrôle est renvoyé au serveur de cache et pas pour le client, et ce qui est réellement à faire est de mettre en cache le rendu de la commande sur le serveur de sorte que la prochaine fois que vous lui demandez de ne pas perdre de temps à le rend de nouveau, mais le lire à partir du cache - est toujours l'envoyer au navigateur.Et vous pouvez aussi lire cette réponse pour un peu plus: Quelles sont les différence entre les services IIS (Dynamique et Statique) cache,OutPutCache et le cache du navigateur
C:\Windows\System32\inetsrv\config\applicationHost.config
mais vous pouvez rechercher sur internet pour plus d'informationslocation
pour vous dire la vérité, je ne suis pas sûr de ce que vous parlez. En tout cas vous pouvez lire l'en-tête de votre contenu statique sur le navigateur pour voir ce que vos iis envoie.web.config
. Maintenant, lorsque vous les placez sur le web.la config est fait pour donner des ordres à IIS quoi faire.Any
location= "server"
est mis en œuvre à laResolveRequestCache
dans le MODULE HTTP. Je ne comprends pas pourquoi vous dites qu'il n'est pas dans le serveur. seulement quand vous écrivez Emplacement=Privé - il est enregistré dans le navigateur. Il serait beaucoup mieux si vous avez eu la bonté d'aller à la salle de chat.