我们正在使用Mono(2.10)XSP4网络服务器来托管在开放式嵌入式Linux(ARM)上运行的ASP.Net MVC3 Web应用程序。启动XSP4时,它需要几秒钟才能准备好并接受请求。到目前为止没问题。
但是当浏览器/网站访问者的第一个请求被使用时,XSP4使用所有CPU,它可以获得大约55秒,直到网页浏览器(成功)显示。每次启动/重启XSP后都会发生这种情况。
我的第一个想法是,这是整个网络应用程序的及时编译。所以我构建了一个只包含二进制文件,.css,.js和视图(.cshtml)的部署包。它起作用但仍然有这么大的延迟。
然后我尝试使用Visual Studio预编译该Web应用程序(如一些Mono发行说明中所述)。该网站再次运作良好,但仍存在巨大延迟。
实际上在我脑海中的一些问题:
任何帮助/想法都会很棒。
更新:同时我发现延迟是由Mono / ASP.Net编译器构建的dcms和将MVC3 razor视图编译成/tmp/root-aspnet.../引起的映射到内存,因此不是持久的。我现在正在寻找一种方法来控制XSP4 / Mono.WebServer / Mono-Asp.Net存储这些编译文件的位置。如果有人熟悉这个,请告诉我; - )
答案 0 :(得分:1)
这可能是本机编译开销(与预编译不同)。您可以检查AOTing the system libraries是否为您提供加速:
mono --aot /usr/lib/mono/1.0/mscorlib.dll
for i in /usr/lib/mono/gac/*/*/*.dll; do mono --aot $i; done
答案 1 :(得分:0)
为防止Rasberry在每次启动XSP4时编译您的网站,您必须使用aspnet_compiler.exe
预编译您的网站,并位于%WINDIR%\Microsoft.NET\Framework\v4.0.30319
文件夹中。
以下是一个例子:
aspnet_compiler.exe -p "d:\original website" -v / -c "d:\compiled website"
编译完网站后,将其上传到您的Rasberry,XSP / mono将使用您网站的编译版本。您的第一个请求会快得多。
以下是一些参考链接: