IIS7: les Différences entre le contenu statique et dynamique de compression
IIS prend en charge deux types de compression: statique la compression de contenu et dynamique la compression de contenu. Selon applicationHost.config, ils sont gérés par différents modules: DynamicCompressionModule (compdyn.dll) et StaticCompressionModule (compstat.dll), et ils sont configurés pour compresser les différents types de demandes. Aussi, je devine que la compression dynamique ne cache pas le comprimé demandes par opposition à la compression statique (par défaut, les fichiers compressés sont enregistrés à %SystemDrive%\inetpub\temp\IIS Temporary Compressed Files
).
Cependant, à côté de ces différences évidentes, je soupçonne qu'il y a quelque chose d'autre. Je pense qu'ils le crochet à l'IIS pipeline d'une manière légèrement différente. Quelqu'un ont un intérieur en un peu plus de détails?
J'ai trouvé était que J'ai été jouer avec un module personnalisé pour modifier les fichiers CSS à la volée. Lorsque la compression statique a été activée (et mis à traiter l'ensemble par défaut des fichiers, c'est à dire également text/css), sur la mise en cache demande mon module personnalisé a été servi le déjà format de contenu. Quand j'ai déménagé text/css à la liste de compression dynamique en demande, tout a commencé à travailler. Mais je voudrais avoir une plus solide, la preuve que c'est vraiment la bonne façon de le faire. Y a t'il d'autres conséquences connues /problèmes?
Mise à jour: je crois que j'ai une théorie sur pourquoi il se passe. Il ne peut pas être 100% correct, mais c'est au moins ça peut expliquer le comportement observé. Je pense que la compression statique module enregistre les événements suivants (parmi d'autres):
RQ_MAP_REQUEST_HANDLER
RQ_EXECUTE_REQUEST_HANDLER
Ensuite, lorsqu'une requête pour un fichier statique est servi, la compression statique module dans OnMapRequestHandler vérifie si le fichier a été compressé à l'avant, et si le fichier n'a pas été modifié. Si oui, il sera re-mapper la demande à lui-même (de retour à la appropriée de redirection à l'aide de IMapHandlerProvider). Lorsque plus tard, il sert en fait de la réponse en OnExecuteRequestHandler, il envoie le fichier compressé. Si, d'autre part, le fichier n'a pas été compressé à l'avant ou si elle a changé, ce n'est pas faire de la cartographie et vous permet de rediriger le contenu statique module de répondre à la requête, puis plus tard dans OnPostExecuteRequestHandler compresse le contenu (et met à jour son cache). Comme mentionné ci-dessus, je ne dis pas que c'est exactement ce qui se passe (je ne sais pas le code source), il est peut-être qu'une approximation. Aussi, la dynamique de compression module n'a pas plus de chances de faire de tout cela. Simplement, il compresse les sortants des réponses parfois après RQ_EXECUTE_REQUEST_HANDLER.
OriginalL'auteur Jan Zich | 2011-04-10
Vous devez vous connecter pour publier un commentaire.
Votre question n'est pas très clair, donc je vais répondre à une question et j'espère que c'est votre question.
L'intention de compression statique est de compresser des fichiers qui seraient autrement être servie directement à partir du disque dur (Css/images/javascript) et comme tel, il compresse pour chaque fichier et enregistre le fichier compressé sur le disque. Cette mesure très rapide très bon marché servant de contenu compressé pour les fichiers statiques qui changent rarement. Il est assez sûr de recommandation-à-dire la plupart des site web statique de compression activée.
L'intention de la compression dynamique est de compresser la dynamique des réponses à partir de modules de l'ISS (asp, asp.net, php, etc.). Comme cette réponse peut être différente pour chaque requête, le comprimé de sortie ne peut pas être mis en cache. Cette fonctionnalité est nouveau à partir de IIS6, bien que l'effet a été possible dans certains environnements, par exemple par la mise en œuvre d'un HttpFilter dans ASP.Net. Chaque demande doit être comprimé à la volée, ce qui est beaucoup plus intensif du CPU ensuite, la compression statique. Donc, si un serveur est en CPU, cela peut ne pas être une bonne option. La plupart des sites du réseau et/ou de la base de données lié de sorte que le est souvent une bonne idée.
Ainsi de la dynamique et de la statique consulter le contenu et les effets quelles stratégies peuvent être utilisées.
Quelques Références
OriginalL'auteur David Waters
Expérimenter avec IIS fonctionnalité de compression, il m'est apparu que le module dynamique et statique du module ne sont pas si étroitement liée à la dynamique ou statique de contenu (en particulier pour le module dynamique).
Activer la compression pour
text/html
(outext/*
) type mime sur le module dynamique, et non statique module. Accéder à une .fichier html. Vérifie la réponse http dans le navigateur: il est comprimé. (Testé sur IIS 7.5 sur serveur 2008R2.)Il ressort de compression dynamique module n'est pas limitée à un contenu dynamique. Il n'comprimé contenu statique offrant elle correspond à sa liste des types mime et n'est pas déjà compressés. Donc, je considère qu'elle doit être comprise comme une dynamique de "compression module", dans le sens où elle se déclenche à chaque réponse (en fonction de son type mime critères, et sur
accept-encoding
en-tête de demande).Tandis que la compression statique module est déclenché un peu comme un processus d'arrière-plan de travail sur les fichiers, et commence à servir de sortie compressé seulement une fois qu'il a dans son cache. Depuis la compression statique module exécute plus loin dans les modules de la pile, il ne poignée de la réponse avant de la compression dynamique du module, et donc de prendre la priorité sur dynamique, si elle a comprimé en sortie de servir.
Donc pour votre cas d'utilisation spécifiques, vous devez désactiver la compression statique module sur
text/css
type mime (méfiez-vous de la suppression detext\*
trop si présent) afin d'éviter les problèmes de mise en cache vaincre votre css personnalisé correctifs module.Vous pouvez en outre activer la compression de
text/css
dans la compression dynamique module pour remplacer la compression statique module sur cette affaire. Mais bien sûr, il ne sera pas tirer parti de la compression statique module de mise en cache de capacité.Malheureusement, je n'ai pas trouvé de documentation pour la sauvegarde des déclarations ci-dessus.
Une autre option pourrait être tenté de modifier IIS de l'exécution du module de commande. Vous devez supprimer tous dans la configuration de votre site, puis ajouter de nouveau à eux, l'insertion de votre module personnalisé peut-être avant la compression statique. Mais cela pourrait être un difficile chemin.
OriginalL'auteur Frédéric