当我使用开发人员工具分析网络加载时间时,我看到加载Index.aspx文档时,到第一个字节的时间大约是8秒。
我的页面已经过优化,大小从未超过1.4兆字节。 我将图片优化为小于100 KB。 我在发布时预编译了我的网站。 我在web.config文件中设置了debug =“ false”。
在网站花费很长时间进行编译之后,所有内容的加载速度非常快。 我正在使用GoDaddy的共享Plesk托管。
答案 0 :(得分:1)
好的,我想我明白了问题所在。 ASP.NET页面需要先进行JIT编译,然后才能呈现。因此,第一次向服务器发出请求时,整个站点将从CIL .NEt二进制文件编译为本机代码。编译后,本机代码将缓存在正在运行的应用程序池中的服务器上。如果服务器在一段时间内没有任何流量(通常默认为20分钟),则将清除缓存的本机代码,因此下次访问页面时,将花费一些时间来编译代码。这是ASP.NET WebSite和WebForms应用程序的常见问题。有几种方法可以解决此问题。
1)手动方法(不理想)-如果仅需要在工作时间内访问该网站,则可以在早晨第一时间访问该网站,之后的每个请求都将很快 2)延长缓存持续时间,但是由于这是托管在GoDaddy / Plex上的,我不知道您将对AppPool进行多少控制 3)创建一个轻量级的Windows服务,其唯一目的是每10到15分钟对网站进行一次ping操作,以使缓存保持活动状态并保持网站的响应速度
选项3感觉有点像黑客,但是我在很多项目中都使用了这种方法,这些项目不会在一整天中持续受到用户的攻击,但是我想确保没有一个用户遇到问题初始页面加载体验。
答案 1 :(得分:0)
发现了问题。 GoDaddy的共享Plesk托管有固定的5分钟,直到空闲的工作进程关闭。当工作进程关闭时,新访客访问该网站时,您的网站实际上将进入“睡眠”状态,并且需要很长时间才能“唤醒”。
解决方案是获得更多流量或每5分钟ping通网站以保持其运行。