Asp.net Azure网站上脚本/样式的长等待(TTFB)时间

Asp.net Azure网站上脚本/样式的长等待(TTFB)时间,asp.net,asp.net-mvc,azure,azure-web-app-service,Asp.net,Asp.net Mvc,Azure,Azure Web App Service,我在Azure网站上遇到了这个有趣的问题。我的网站使用4个脚本文件和3个样式文件,每个文件都缩小了。它们没有那么大,最大的有近200kbs。网站已经启动。Azure的“始终打开”选项已打开。当我调用WebApi获取数据时,它会返回那么。。。您的站点存在两个主要问题: 您正在使用AZURE-一种价格昂贵但性能较差的服务。。。。别问我为什么人们认为这是一个好服务 您正在将客户端文件与服务器文件并排存储。。虽然服务器文件应该存储在特定的服务器中,但客户机文件实际上可以从。。。到处 > -请使用CDN

我在Azure网站上遇到了这个有趣的问题。我的网站使用4个脚本文件和3个样式文件,每个文件都缩小了。它们没有那么大,最大的有近200kbs。网站已经启动。Azure的“始终打开”选项已打开。当我调用WebApi获取数据时,它会返回那么。。。您的站点存在两个主要问题:

  • 您正在使用AZURE-一种价格昂贵但性能较差的服务。。。。别问我为什么人们认为这是一个好服务

  • 您正在将客户端文件与服务器文件并排存储。。虽然服务器文件应该存储在特定的服务器中,但客户机文件实际上可以从。。。到处


  • <> > -请使用CDN(或任何其他服务器)为您的客户端文件(主要是CSS和JS,您也可以考虑移动字体和图像)

    我猜是AZESS总是在上面。 如果它的工作原理与CloudFlare提供的类似,那么它实际上会代理请求并尝试缓存它。
    根据Azure端此缓存的具体实现,它可能会等待脚本输出完成以缓存/验证缓存,然后将其传递到浏览器


    您可能有机会检查缓存配置,并在可能的情况下禁用脚本的“始终打开”。

    脚本和样式是静态文件,在发送到客户端之前,默认情况下是压缩的(您可以使用HTTP头“content encoding”:gzip对此进行检查)。因此,TTFB由网络延迟、浏览器HTTP通道调度和来自服务器的静态文件压缩时间组成

    另一方面,Web API数据是动态数据,默认情况下不压缩,因此其TTFB可能小于静态文件的TTFB


    但是,您不需要关闭静态压缩,否则TTFB将最小化,但内容传输时间将延长。实际上,您不需要担心TTFB,请参阅更多信息:

    虽然静态文件已缓存,但浏览器仍会发出带有if modifies-since头的请求(这将导致304)

    虽然它不需要下载实际内容,但仍然需要等待RTT+服务器思考时间才能继续

    我建议两件事:

  • 添加缓存控制和过期头将有助于在某些情况下避免304(除非您点击F5)
  • 使用适当的CDN-如Incapsula或其他,这将最大限度地减少RTT+思考时间。它还可以用于轻松控制各种资源的缓存设置
  • 这里有更多的好东西


    祝你好运

    我完成了在Azure存储上存储文件并通过Azure CDN为其提供服务的工作。它提供了快速的响应,而且不需要任何成本。每次发布时,我都会通过Gulp在预构建事件中将它们添加到blob中。

    来源:

    正如您在前面看到的,IIS 7缓存静态文件的压缩版本 文件夹。因此,如果一个静态文件的请求到达,该文件的压缩 版本已在缓存中,不需要压缩 再说一遍

    但是如果缓存中没有压缩版本呢?iis7会吗 然后立即压缩文件并将其放入缓存?答案 是,但仅当文件经常被请求时。不 压缩仅偶尔请求的文件,IIS 7将保存 CPU使用率和缓存空间

    默认情况下,如果文件是 每10秒请求两次或更多次

    因此,向用户提供未压缩版本的javascript文件的原因是,它不符合压缩的默认阈值;换句话说,javascript文件在10秒内没有被请求2次

    要控制这一点,我们必须在控制压缩的
    元素上更改一个属性:
    frequentHitThreshold
    。为了在请求文件一次时对其进行压缩,请将
    元素更改为如下所示:

    <serverRuntime enabled="true" frequentHitThreshold="1" />
    
    
    

    如果您有许多javascript文件正在被提供,并且您经常有用户,那么这将稍微影响您的CPU性能,但是如果您有足够多的用户通过压缩这些文件来影响CPU,那么它们可能已经被压缩和缓存了

    DenverCoder9你发现了什么?你看到了什么?请提供更多关于你的情况的信息。您使用的是哪个版本的asp.net mvc?有任何配置吗?这种情况是否也发生在localhost中,还是仅发生在Azure上?@ManosPasgiannis用于仅限赏金的Azure、最新的MVC(不是vNext),但文件是静态的,不通过它提供服务。因此,根本不提供文件服务?如果是这种情况,是所有文件类型都会发生这种情况,还是某些文件类型都会发生这种情况?您对这些文件使用捆绑包吗?请查看它们都是压缩的。