首页 > 技术文章 > 小技巧-WEB API第一次加载很慢

cvol 2017-03-13 14:36 原文

原文:http://www.afuhao.com/article_articleId-219.shtml
摘要:ASP.NET页面首次打开很慢,但别的页面如果没有访问过,去访问也会慢。你也许认为它是在编译ASPX,或者加载一些东西。不过我发现不是这样的。

用过ASP.NET的人都知道吧,页面首次打开很慢。

本来网站第一次启动就慢,但别的页面如果没有访问过,去访问也会慢。

 

好吧,你也许认为它是在编译ASPX,或者加载一些东西。

我也这样认为过。

 

不过我发现不是这样的。

1.bin目录里面你放多少它加载多少,如果放一些无效的DLL,比如在32位下面放一些纯64位的DLL,就会直接报错;

2.aspx页面解析非常快,那么转成CS也是一瞬间,编译更不用说,不应该是卡上2-5秒,1秒是可以接受的;

 

.net程序第一次运行速度慢的问题原因是第一次运行需要验证数字签名。

    当程序里面需要调用到一些 Authenticode Signed的.NET Assembly的时候,它需要连接到外网来验证数字证书。当服务器是无法连接到外网时,这个校验证书的过程需要等到timeout之后才会结束

 

那么要做的就是不让它干这些坏事,总之我从来都不觉得它会老老实实的给你服务。

 

禁止证书的验证过程:
1、在下面aspnet.config文件中加入下面内容: 
    32位系统:C:\Windows\Microsoft.Net\Framework\v2.0.50727\aspnet.config
    64位系统:C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet.config

    4.0 :C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config

    4.0 :C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config

   有4.0,甚至4.5的自己多改几个地方,如果是64位的系统,可能需要以管理员身份打开编辑器,再打开这个文件,否则无法保存的。

 

<?xml version="1.0" encoding="utf-8"?>  

<configuration>   

   <runtime>  

     <generatePublisherEvidence enabled="false"/>  

   </runtime>  

</configuration>  

对"Network Service"帐号下运行的所有程序禁止证书检查

    不会的话就忽略吧。

    导入以下注册表内容,自己先另存为*.reg文件吧,如果会手工操作的话,就手工来吧。

 

Windows Registry Editor Version 5.00    

[HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing]  

"State"=dword:00023e00  

然后记得重启一下应用程序池(实在不知道,就重启IIS服务),再去看看你的网站,首次加载快吗?其它页面访问快吗?

推荐阅读