我有一个非常烦人的问题。
我有一个在 IIS7.5 中运行的应用程序(.net 3.5)。
通常,当我回收应用程序时,第一次浏览该应用程序需要一些时间。我已经习惯了这种行为,所以我不介意。我认为 IIS 会缓存应用程序内所需的 dll,不是吗?
好吧,我有一个在 IIS7.5 上运行的应用程序没有显示此行为。事实上,当我回收我的应用程序时,第一页的加载速度非常快(不到一秒)。应用程序中的每个页面都是如此,除了一个页面。
经过一番研究(大约 2 天),我发现这是由于一个特定的第三方 dll 似乎没有在应用程序第一次加载时被缓存。所以我第一次浏览这个特定页面时,dll(17 mb 大)被加载,这当然需要一些时间(第一次加载通常需要的时间)。第一次之后,该页面的运行速度非常快,实际上是该 dll 的加载导致了性能问题。
如何让 IIS 7.5 在应用程序启动时加载所有我的 dll?
我希望我解释清楚了。
要知道:
- Windows Server 2008(64 位)
- IIS 7.5
- .NET 3.5
- 虚拟环境
干杯,M。
答案1
.NET 以惰性方式加载 dll(或通常所说的程序集)。只有当需要程序集的程序即将执行时,才会加载程序集。
因此,如果永远不需要该程序集,因为没有调用任何使用它的东西,所以永远不需要加载它。