【发布时间】:2014-03-27 17:22:36
【问题描述】:
我正在尝试使用 ASP.NET 预编译工具 aspnet_compiler.exe 在站点部署后对其进行编译。
根据书籍定义,在 Web 机器上运行就地预编译应该会改善首页加载体验。编译工具编译每个 ASP.NET 页面,将编译后的版本存储在 %WINDIR%\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files 文件夹中,就像每个页面都是第一次从浏览器访问一样。就地预编译可以加快向您网站上新部署的 ASP.NET 页面发出的第一个请求,因为它减少了运行时执行此步骤的需要。
出于某种原因,它无法按预期的方式工作。
当手动在 Web 机器上本地运行 aspnet_compiler.exe 时:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /7.1 -p C:\MyPathToWebSite\www
它创建了以下结构结构的文件夹:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\7.1\640c1f87\4be3507b
当我尝试使用浏览器访问网页时,ASP.NET 在同一服务器上的以下文件夹中创建另一个缓存版本:
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\7.1\bc8a1bb3\42b014d4
正如您所见,预编译在两种情况下(手动和 IIS)都有效,但不知何故,IIS 看不到页面已经预编译和兑现,并试图再次重新编译所有内容。我无法弄清楚缺少什么或做错了什么,因为 aspnet_compiler.exe 用于就地编译的参数选项有限。
到目前为止,我在测试/调查 ASP.NET 临时缓存方面尝试了以下操作:
- 似乎与用户无关,与手动运行的用户无关
- 与源/目标 IP 无关,因为相同的文件夹是在不同子网的不同服务器上创建的
任何想法和帮助表示赞赏。
【问题讨论】:
标签: asp.net aspnet-compiler pre-compilation