Время загрузки изображения HTTP / 2 - ожидание завершения последнего - PullRequest
0 голосов
/ 04 ноября 2019

Это сбивает меня с толку. На новом сервере (Windows Server 2016) мои изображения загружаются синхронно. Браузер пытается загрузить их все одновременно, но что-то мешает загрузке изображения до завершения предыдущего. Время до первого байта увеличивается при попытке загрузки каждого изображения.

РЕДАКТИРОВАТЬ: Я разместил свой код обработчика изображений ниже, но вы можете видеть, что проблема существует при загрузке .jpg в его собственном формате (см. Скриншот примерно на полпути).

РЕДАКТИРОВАТЬ 2: Iотключили http / 2 и добавили снимок экрана.

enter image description here

Мой код обработчика изображений SVG (проблема также существует с image.ashx):

    Dim freshness As TimeSpan = New TimeSpan(1, 0, 0, 0)
    Dim now As DateTime = DateTime.Now
    Response.Cache.SetExpires(now.Add(freshness))
    Response.Cache.SetMaxAge(freshness)
    Response.Cache.SetCacheability(HttpCacheability.Public)
    Response.Cache.SetValidUntilExpires(True)

    Response.Cache.VaryByParams("colour") = True
    Response.Cache.VaryByParams("colour2") = True
    Response.Cache.VaryByParams("svg") = True
    Response.Cache.VaryByParams("rnd") = True
    Response.Cache.VaryByHeaders("rnd") = True
    Response.Cache.VaryByHeaders("Type") = True


    Dim sSVG As String = Request.QueryString("svg").Split("-")(0)
    If sSVG = String.Empty Then
        Try
            sSVG = Request.ServerVariables("SCRIPT_NAME").Split("-")(0)
        Catch ex As Exception
            sSVG = "svg"
        End Try
    End If


    Dim xDoc As XDocument = XDocument.Load(Server.MapPath("\images\icons\svg\" & sSVG & ".svg"))

    Dim sColour As String = "FFFFFF"
    Dim sColour2 As String = "FFFFFF"
    Dim sXML As String = xDoc.Document.ToString
    If Request.QueryString("Colour") <> String.Empty Then
        sColour = Request.QueryString("Colour")
    Else
        Try
            sColour = sSVG.Split("-")(1)
        Catch ex As Exception
        End Try
    End If
    If Request.QueryString("Colour2") <> String.Empty Then
        sColour2 = Request.QueryString("Colour2")
    Else
        Try
            sColour = sSVG.Split("-")(2)
        Catch ex As Exception
        End Try
    End If

    sXML = sXML.Replace("COLOUR2", sColour2)
    sXML = sXML.Replace("COLOUR", sColour)

    Response.Headers.Add("Vary", "Accept-Encoding")
    Response.ContentType = "image/svg+xml"
    Response.Write(sXML)

HTTP / 2 отключен:

enter image description here

...