gpt4 book ai didi

iis-7 - IIS7 : Differences between static and dynamic content compression

转载 作者:行者123 更新时间:2023-12-02 11:45:32 25 4
gpt4 key购买 nike

IIS 支持两种类型的压缩:静态内容压缩和动态内容压缩。根据 applicationHost.config,它们由不同的模块处理:DynamicCompressionModule (compdyn.dll) 和 StaticCompressionModule (compstat.dll),并且它们被配置为压缩不同类型的请求。另外,我猜测动态压缩不会缓存压缩请求,与静态压缩相反(默认情况下,压缩文件保存到 %SystemDrive%\inetpub\temp\IIS Temporary compressed Files )。

但是,除了这些明显的差异之外,我怀疑还有其他东西。我认为它们连接到 IIS 管道的方式略有不同。有人能了解更多细节吗?

我发现的方式是I was toying with a custom module for modifying CSS files on fly 。当静态压缩打开(并设置为处理默认文件集,即文本/css)时,根据缓存的请求,我的自定义模块将提供已压缩的内容。当我将 text/css 移动到动态压缩请求列表时,一切都开始工作。但我希望有更确凿的证据证明这确实是正确的做法。还有其他一些已知的后果/问题吗?

更新:我想我可能有一个关于为什么会发生这种情况的理论。它可能不是 100% 正确,但至少可以解释观察到的行为。我认为静态压缩模块将自身注册到以下事件(以及其他一些事件):

RQ_MAP_REQUEST_HANDLER
RQ_EXECUTE_REQUEST_HANDLER

然后,当提供静态文件请求时, OnMapRequestHandler 中的静态压缩模块检查文件之前是否已被压缩以及实际文件是否未被更改。如果是这样,它将把请求重新映射到自身(使用 IMapHandlerProvider 返回适当的重定向)。当它后来实际提供 OnExecuteRequestHandler 中的响应时,它发送压缩文件。另一方面,如果文件之前尚未压缩或已更改,则它不会执行映射重定向并让静态内容模块服务于请求,然后在 OnPostExecuteRequestHandler 中提供服务。压缩内容(并更新其缓存)。如上所述,我并不是说这正是正在发生的事情(我不知道源代码),它可能只是一个近似值。而且,动态压缩模块很可能不会执行这些操作。有时它只是在 RQ_EXECUTE_REQUEST_HANDLER 之后压缩传出响应。

最佳答案

你的问题不太清楚,所以我来回答一个问题,希望是你的问题。

静态压缩的目的是压缩直接从硬盘驱动器(Css/images/javascript)提供的文件,因此它会压缩每个文件一次并将压缩文件保存到磁盘。这使得能够非常快速、非常便宜地为不经常更改的静态文件提供压缩内容。大多数网站都应该启用静态压缩,这是一个非常安全的建议。

动态压缩的目的是压缩来自 ISS 模块(asp、asp.net、php 等)的动态响应。由于每个请求的响应可能不同,因此无法缓存压缩输出。此功能是 IIS6 中的新功能,尽管在某些环境中已经可以实现该效果,例如通过在 ASP.Net 中实现 HttpFilter。由于每个请求都需要动态压缩,这比静态压缩需要更多的 CPU 资源。因此,如果服务器受 CPU 限制,这可能不是一个好的选择。大多数站点都是网络和/或数据库绑定(bind)的,因此这通常是一个好主意。

所以动态和静态是指可以使用什么策略的内容和效果。

一些引用资料

关于iis-7 - IIS7 : Differences between static and dynamic content compression,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5610172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com