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

时间:2016-02-13 20:47:01

标签: asp.net asp.net-mvc iis iis-7.5

我有一个在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秒。后续请求没问题。
  4. 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
    

    它显示 ServerGotRequest ServerBeginResponse

    之间延迟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个问题(就在家里)。他建议将我的网站转移到第三个数据中心。但它可能发生在我的网站访问者身上,我不想只为我解决。

    请帮忙!

2 个答案:

答案 0 :(得分:0)

有两种可能性浮现在脑海中:

  1. 缓存:有些资源没有缓存,因此需要加载它们需要一段时间。你如何确定是否是这种情况?安装Fiddler并打开页面。您将看到http响应代码。怎么修?缓存:)
  2. 应用程序池:似乎不是您的问题,但想提及其他读者。在我的Microsoft门户应用程序中发生了这种情况。他们想要近乎即时装载,它工作得很好......有时候。我对代码进行了几次调试和分析,直到找到它为止。问题是应用程序池被回收,它需要启动并加载所有内容。我是如何修理的?我每隔5分钟就设置一个cron作业来打开一个页面,这样可以将应用程序加载到内存中,这样就可以获得近乎即时的响应。
  3. 希望这有帮助!

答案 1 :(得分:0)

一个好的测试是建立一个像www.site24x7.com这样的监控服务,并让它从多个位置ping你的网站,你可以在那里看到响应时间。