utilizadas son que ofrece mas herramientas google funciones cuales contiene aplicaciones ipad iis-7 mobile-safari range html5-video

ipad - ofrece - que es google drive y cuales son sus herramientas



Mobile Safari realiza mĂșltiples solicitudes de video (1)

Por mi comentario a su pregunta, he tenido un problema similar en el pasado. Una cosa que podrías probar si tienes el control del servidor (no lo hice) es deshabilitar gzip o la codificación de identidad del archivo. Creo que en la primera solicitud de todo el contenido (n. ° 2 de la lista) se solicita el contenido con la codificación gzip (comprimida). Quizás pueda configurar su IIS para que no sirva el archivo para una solicitud de codificación gzip.

Aquí está mi pregunta original (sin respuesta) sobre el tema:

https://stackoverflow.com/questions/4855485/mpmovieplayercontroller-not-playing-full-length-mp3

Estoy diseñando una aplicación web para iPad que hace uso de HTML5 en el safari móvil. Estoy transmitiendo el archivo manualmente a través de un archivo ASP.NET .ashx alojado en IIS 7 ejecutando .NET Framework v2.0.

El código esencial se ve en parte así:

// If we receive range header only transmit partial file if (context.Request.Headers["Range"] != null) { var fi = new FileInfo(filePath); long fileSize = fi.Length; // Read start/end index string headerRange = context.Request.Headers["Range"].Replace("bytes=", ""); string[] range = headerRange.Split(''-''); int startIndex = Convert.ToInt32(range[0]); int endIndex = Convert.ToInt32(range[1]); // Add header Content-Range,Last-Modified context.Response.StatusCode = (int)HttpStatusCode.PartialContent; context.Response.AddHeader(HttpWorkerRequest.GetKnownResponseHeaderName(HttpWorkerRequest.HeaderContentRange), String.Format("bytes {0}-{1}/{2}", startIndex, endIndex, fileSize)); context.Response.AddHeader(HttpWorkerRequest.GetKnownResponseHeaderName(HttpWorkerRequest.HeaderLastModified), String.Format("{0:r}", fi.CreationTime)); long length = (endIndex - startIndex) + 1; context.Response.TransmitFile(filePath, startIndex, length); } else context.Response.TransmitFile(filePath);

Ahora lo que me confunde sin fin son los protocolos para solicitar que Safari parezca usar. De proxying las solicitudes a través de fiddler me sale lo siguiente para un archivo aproximado de 2MB.

NOTA: Al solicitar un archivo mp4, servido directamente a través de IIS 7, el protocolo y la cantidad de solicitud son los mismos

  1. Primero solicita 2 bytes lo que le permite leer el encabezado ''Content-Range''.
  2. Ahora solicita todo el contenido (?)
  3. -
  4. Continúa haciendo los pasos 1. y 2. de nuevo (??)
  5. -
  6. Ahora solicita solo partes del archivo (???)

Si el archivo es más grande, los últimos pasos serán muchos más. He probado hasta 99 solicitudes donde cada solicitud contiene una parte del archivo igualmente dividida. Esto tiene sentido y es lo que se esperaría, creo. Lo que no puedo entender es por qué hace 2 solicitudes iniciales para los primeros 2 bytes, así como 2 solicitudes para todo el archivo antes de que finalmente solicite el archivo en diferentes partes.

Cuando concluyo, esto da como resultado que el archivo se descargue entre 2 y 3 veces, dependiendo de la longitud del archivo y de si el usuario lo mira el tiempo suficiente.

¿Alguien puede darle sentido a este comportamiento y quizás explicar qué puedo hacer para evitar descargas múltiples? Gracias.