WebResource.axd和ScriptResource.axd加载非常缓慢

10

在正常情况下,这两个 .axd 文件的加载速度都很快,即几百毫秒。通过查看 Chrome 或其他调试工具中的瀑布图(网络图),我可以看到它们与所有其他页面元素一样正常加载。

偶尔会发生某种问题,导致这两个文件需要大约一分钟的时间才能加载。以下是一些其他注意事项:

  • 页面上所有其他元素的加载速度都正常。
  • 通常每天发生一两次,持续几分钟。
  • 我可以看到性能计数器上的请求队列突然增加。
  • 此时 CPU、内存和磁盘均保持正常状态。
  • 今天出现了一个需要重启应用程序才能解决的几小时的故障。
  • 尚未合并 .axd 文件或类似的操作。
  • 整个站点实施了 URL 重写。.axd 文件被排除在重写之外。
  • 应用程序使用 C# 3.5 构建。
  • IIS 7。
  • 我正在使用 ScriptManager 的 CDN 版本,例如:

    <asp:scriptreference name="MicrosoftAjax.js" path="http://ajax.microsoft.com/ajax/3.5/MicrosoftAjax.js"></asp:scriptreference>

看起来其他人也遇到了类似的问题,但没有解决:

WebResource.axd 和 ScriptResource.axd 奇怪的行为

WebResource.axd & ScriptResource.axd 加载时间超过 1 分钟

问题:

有什么办法可以找出是什么原因导致这两个文件偶尔加载速度如此缓慢吗?

另外,是否有任何解决方法,例如预先构建 .axd 文件之类的操作..?


在网络阻塞发生之前,你能否提供更多关于情况/你所做的事情的细节?希望重建应用程序可以解决问题,但这并不是一个很好的解决方案。 - Deeptechtons
问题每隔几天就会出现,没有任何特定的更改。由于新功能不断推出,网站几乎每天都会重建。 - Dave Sumter
4个回答

1

我有一些建议可能会有所帮助。

  • 下载Ajax Control Toolkit的最新版本
  • 通过在web.config中设置来运行发布模式

    <deployment retail="true" ...>
    
  • 不要从其他网站加载JavaScript文件,而是将其下载到您的磁盘上并直接从服务器加载。

测试它们,看看你的问题是否解决了。


谢谢Aristos。抱歉,也许我在这方面缺乏一些经验,但是这将如何解决.axd文件被慢慢获取的问题呢..?它会改变这些文件的加载行为吗..? - Dave Sumter
你是在建议像这样的做法吗?https://dev59.com/6HRB5IYBdhLWcg3wz6QK - Dave Sumter
@Dave,我不能百分之百确定这个方法能解决问题,但我告诉你为什么我建议这样做。首先,将retail=true设置为true可以去除所有的调试信息和注释,使文件加载更快。总有可能出现调试信息导致延迟的情况。其次,获取最新版本,这样可以消除旧版本报告的错误和问题。最后,不要从其他网站加载脚本,因为总有可能由于一些无法控制的随机原因而无法加载,因为那不是你的网站。 - Aristos
@Dave,我也建议像你说的那样做,这不仅是我的建议,而且是一种普遍的良好实践。您需要将所有脚本加载到1或2个文件中,有许多方法可以做到这一点,个人而言,我使用了Microsoft Ajax Minifier来创建我的代码,您可以在此链接中找到它:http://www.asp.net/ajaxlibrary/ajaxminquickstart.ashx - Aristos
谢谢 Aristos,我会研究这个路径。只有两个 .axd 文件被加载,并且肯定没有加载调试版本。此外,当出现此问题时,托管在 CDN 上的 MicrosoftAjax.js 版本可以完美加载。这个问题是间歇性的,但可能会持续几个小时,直到我重启应用程序池。 - Dave Sumter

1

嗨,我不认为这会改变请求这两个.axd文件的方式..? - Dave Sumter

1

基本上,这些axd文件是处理程序,您可能已经知道处理程序代码将由ASP.net引擎执行。这些处理程序只是发出一个js文件。

我在这里的估计是,应用程序域或工作进程正在回收。检查您的性能监视器,并查看应用程序重新启动计数器以及工作进程重新启动。


-1
如果.axd文件是静态的且不会更改,那么我认为将它们保存并将其作为js文件引用是没有问题的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接