为什么ASP.Net网站加载缓慢?[关闭]


9

有趣的是,我访问了许多.aspx网站,每个网站需要大量的加载时间。

我的经历是否独特?

如果没有,为什么ASP.Net网站加载缓慢?

编辑:现在大约7年后(12/29/2017)。好消息是,我再也看不到这个问题了,可能是因为Google开始惩罚加载速度太慢的网站。我现在使用ASP.NET MVC并取得了良好的效果,目前在Vultr专用虚拟服务器上运行(尝试使用Azure时速度太慢了。)我现在看到的一些最严重的违规行为是CMS系统,如Wordpress和Drupal,可能在对于网站获得的流量而言太慢或规格不足的硬件。-HK1


10
可能有许多因素在起作用。此刻正在使用的网站是建立在.NET上的,并且通常非常快(减去停机时间/维护时间)。这些站点的开发人员可能正在向您推送大量数据,或者连接速度缓慢,服务器超载等,等等。这也可能在起作用。
wkl 2011年

4
@birryree您应该添加您的评论作为答案,因为您几乎在那儿碰到了头。
亚当李尔

我已经通过简单的代码隐藏解决了这个问题,您可以在此处查看:http
VnDevil 2014年

Answers:


22

我可以想到的五种可能性(除了一些高级缓存技术等):


您无法找到一个例子吗?
JeffO 2011年

1
ViewState在这些问题中也起作用。
艾琳(Erin)

1
1)换句话说,ASP.NET比asp classic使用更多的资源?
HK1

1
我认为您的好答案(或此处的其他任何答案)中未提及的另一个常见问题是数据库访问速度慢。我曾经使用过几家“预算”网络托管公司(网络解决方案,更不用说任何名称)了,并且由于数据库访问(SQL Server)而出现了一些非常糟糕的速度下降。
HK1

8

显然,这可能是值得回答的。

可能有许多因素在起作用。此刻正在使用的网站是建立在.NET上的,并且通常非常快(减去停机时间/维护时间)。

您所访问的那些站点的开发人员可能正在向您发送大量数据,或者连接速度慢,服务器超载等等等。这也可能在起作用。另外,也许正在运行疯狂的JavaScript,而您正在运行IE?还是闪光灯?


4

如果您真的不知道自己在做什么,ASP.NET WebForms允许您通过将控件拖放到表单上来创建Web应用程序,甚至可以隐藏http的无状态性质。它可以工作,但是这种开发永远不会产生有效的代码,尤其是在您的数据访问层涉及生成的查询时,该查询从没有索引的sql express数据库中选择所有内容。

有许多快速的asp.net网站,这些网站是由了解Web应用程序真正工作原理的人开发的。该站点包括该站点-它使用ASP.NET MVC,它提供了对单个请求处理的更多控制,并且未显示.aspx扩展名。


3

只是在这里猜测,因为我注意到了同样的事情。我怀疑.asp站点倾向于(请注意“ tend ”一词)是自托管在公司服务器上,而不是托管在数据中心或数据中心内。因此,它们通常在并非真正为高速Web流量设计的硬件和连接上运行。我怀疑冷聚变驱动的站点也会遭受此困扰。


2

网站加载时(application.start事件),需要花费时间将所有内容加载到内存中。根据IIS设置,大约20-30分钟不活动后,它将卸载。我没有遇到过一种不错的方法来保持应用程序持续运行,而不需要GET每10分钟就有一些服务执行。

设计不良的后端/数据层可能会使任何东西运行缓慢(无论计算机运行速度有多快)。分析将帮助您确定问题出在哪里。


1

您肯定会在想象中。:)

任何软件都会影响很多因素。体系结构,代码流的冗余,代码的质量等。太多的东西甚至无法开始列出。

您是否想要证明ASP适合企业级使用?这个网站(和所有SE)网站都是使用ASP.Net(特别是MVC)制作​​的。

该网站上次访问的时间是何时?我来这里已有一年多了,尽管拥有庞大的用户群,但我从未注意到有任何事情在变化。


0

viewstate确实可以减慢回发。如果页面上有大量的大型下拉列表,则不应在其上使用视图状态。

viewstate可以让您假装正在使用有状态的winforms应用程序。有时会使您陷入麻烦。


0

以上所有可能都是正确的。影响我工作的ASP.NET站点性能的最大因素是与它有关的所有内容都是陈旧的。.NET框架版本,服务器,数据库基础结构以及代码本身都严重老化。

我怀疑许多ASP.NET网站都倾向于是公司网站。这些人不会得到太多的爱,因为它们往往只会起作用。人们直到需要时才重写它们,这通常需要很长时间。

我知道与我一起使用ASP.NET的网站通过迁移到框架的最新版本获得了巨大的提速,该框架具有更有效的JITing和合理的缓存默认设置。

我看到的另一件事是,许多ASP.NET网站都不知道如何正确缩放。他们没有适当的负载平衡设置,因为在社区中设计其站点以使其与Web Garden一起正常使用并不普遍,也没有充分记录在案。如果您从一开始就没有为网络花园设计站点,则无法使用IIS具有的内置横向扩展机制。Windows NLB的软件负载平衡不是很常见,并且管理起来很复杂。(这可以回溯到这样一个事实,ASP.NET往往是公司软件,并且往往由运行站点的公司而不是由知道如何正确配置此东西的IT专业人员来管理。)

使用F5进行硬件负载平衡非常昂贵,但似乎是在公司网络内扩展ASP.NET站点的最常见和最简单的机制。我认为开源人群中的期望是,您从一开始就使用免费的开源工具建立负载平衡,这些工具会根据使用情况自动进行扩展。从我所见,这在ASP.NET世界中并不常见。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.