每个浏览器首次加载缓慢或一段时间后加载

问题描述 投票:0回答:3

我有一个在 Windows Server 2008 / IIS 7.5 上运行的低流量 ASP.NET MVC 4 应用程序。 我的问题是:

  • 第一个请求很慢大约 15 秒。 (后续的要求都可以)
  • 大约2分钟后再次请求没有任何请求总是得到缓慢的响应(大约15秒)
  • 在第一个请求之后,如果我从新浏览器发出另一个请求,同样需要 15 秒。

解决问题的场景(文档大小为24 KB):

  1. 时间:16:26 - 使用 Chrome - 第一次请求需要 15 秒。后续请求没问题。
  2. 时间:16:27 - 使用 Firefox - 第一个请求需要 15 秒。后续请求没问题。
  3. 时间:16:30 - 使用 IE 11 - 第一个请求需要 15 秒。后续请求没问题。

Here is all screenshots of Developer Tools/Network Tab

还有 Fiddler 时间输出:

Request Count:  1
Bytes Sent:     380     (headers:380; body:0)
Bytes Received: 7,217       (headers:409; body:6,808)

ACTUAL PERFORMANCE
--------------
ClientConnected:    22:41:26.377
ClientBeginRequest: 22:41:26.378
GotRequestHeaders:  22:41:26.378
ClientDoneRequest:  22:41:26.378
Determine Gateway:  0ms
DNS Lookup:         0ms
TCP/IP Connect: 28ms
HTTPS Handshake:    0ms
ServerConnected:    22:41:26.407
FiddlerBeginRequest:    22:41:26.407
ServerGotRequest:   22:41:26.407
ServerBeginResponse:    22:41:41.496
GotResponseHeaders: 22:41:41.496
ServerDoneResponse: 22:41:41.503
ClientBeginResponse:    22:41:41.503
ClientDoneResponse: 22:41:41.504

Overall Elapsed:    00:00:15.1258651

它显示 ServerGotRequestServerBeginResponse

之间有 15 秒的延迟

这个问题就发生在我家。工作或我朋友的计算机(指另一个 ISP)没有问题。另外我的网速没有问题,然后我测试了我的网站连接:

输出

ping neshoonak.ir

Reply from 94.232.172.248: bytes=32 time=67ms TTL=122
Reply from 94.232.172.248: bytes=32 time=56ms TTL=122
Reply from 94.232.172.248: bytes=32 time=63ms TTL=122

输出

ping 8.8.8.8

Reply from 8.8.8.8: bytes=32 time=134ms TTL=47
Reply from 8.8.8.8: bytes=32 time=171ms TTL=47
Reply from 8.8.8.8: bytes=32 time=132ms TTL=47

我测试了一些与我的网站位于同一数据中心的网站 并发现他们都有同样的问题(工作中根本没有问题)。

我的经销商托管说有 3 个数据中心,但我对其中 2 个数据中心有问题(就在家里)。他提议将我的网站转移到第三个数据中心。但我的网站访问者可能会遇到这种情况,我不想只为我解决这个问题。

请帮忙!

asp.net asp.net-mvc iis iis-7.5
3个回答
0
投票

我想到了两种可能性:

  1. 缓存:有些资源没有缓存,因此需要加载,这需要一段时间。您如何识别是否属于这种情况?安装Fiddler并打开页面。您将看到 http 响应代码。怎么修?缓存:)
  2. 应用程序池:似乎不是您的问题,但想向其他读者提及。我在 Microsoft 门户的应用程序中发生了这种情况。他们想要近乎即时加载,而且效果很好……有时。我对代码进行了几次调试和分析,直到它触动了我。问题是应用程序池被回收,它需要启动并加载所有内容。我是怎么修好的?我设置了一个 cron 作业,每 5 分钟打开一个页面,这使得应用程序加载到内存中,从而接近即时响应。

希望这有帮助!


0
投票

一个好的测试是设置一个监控服务,例如 www.site24x7.com,并让它从多个位置 ping 您的站点,您可以在那里看到响应时间。


0
投票

我遇到了同样的问题,解决方案是我打开了代理设置...所以只需在 Windows 上输入代理(我的是 Windows 10)并确保所有内容都已关闭。

© www.soinside.com 2019 - 2024. All rights reserved.