entendiendo y superando el problema de rendimiento SSL

0

Hay muchos artículos excelentes que explican cómo funciona SSL/TLS en este sitio, pero me gustaría comentar el problema de rendimiento. La cosa es que estoy sirviendo mi contenido web a través de HTTPS y el protocolo de enlace SSL toma mucho tiempo.

Por lo que entiendo en este momento, la conexión a través de HTTPS se crea de la siguiente manera:

  • TCP handshake
  • protocolo de enlace SSL
  • datos HTTP

Ahora, teniendo en cuenta que no puedo usar el encabezado keep-alive en HTTP , ¿eso significa que con cada solicitud se activan esos 3 puntos? Mis pruebas empíricas muestran que la parte del protocolo de enlace SSL que es extra de plain HTTP toma alrededor de 200-300ms. Para cargar la página principal, la aplicación está realizando más de 10 solicitudes, lo que significaría 200 * 10 = 2 segundos, ¿verdad? Eso es demasiado.

Entonces la pregunta es: ¿Cómo puedo optimizar esas rutinas? Y también, ¿cómo se distribuye el rendimiento entre el servidor y el cliente durante el protocolo SSL? Parece que el servidor tiene que hacer muchos más cálculos, ¿es correcto?

    
pregunta Erki M. 09.03.2014 - 02:10
fuente

2 respuestas

2

Cuando su sitio web haga referencia a 10 archivos externos, estos no se cargarán uno tras otro. El navegador web de los usuarios los solicitará todos al mismo tiempo y los cargará en paralelo. Eso significa que el tiempo total es de 200 ms para cargar el archivo HTML y otros 200 ms para cargar todas las imágenes, scripts, hojas de estilo, etc. que se mencionan en él.

El RFC 2616 indica que los navegadores web solo pueden abrir dos conexiones a cada servidor al mismo tiempo, pero en la actualidad todos los navegadores principales ignoran esto y permiten muchas más conexiones paralelas (¿cuántas varían de un navegador a otro? configurable por el usuario).

    
respondido por el Philipp 09.03.2014 - 04:42
fuente
1

Por lo tanto, se requiere que use SSL, que agrega una sobrecarga notable a la configuración de la conexión, pero no se le permite usar una conexión persistente (por ejemplo, keep-alive) lo que haría que esa sobrecarga sea menos relevante porque hace varias solicitudes dentro de la misma conexión. Esta restricción me suena estúpida.

Todavía tienes algunas opciones para acelerar las cosas:

  • Reutilización de sesión SSL, lo que reduce el tiempo o el protocolo de enlace SSL en conexiones repetidas al mismo servidor.
  • Haz menos solicitudes, por ejemplo, fusionar varias secuencias de comandos o estilos incluidos en el archivo o servirlos en línea dentro del HTML. Utilice las URL de datos para imágenes pequeñas, etc.
  • Distribuya la carga en conexiones paralelas (consulte otras respuestas para conocer los límites de este enfoque).
respondido por el Steffen Ullrich 09.03.2014 - 08:57
fuente

Lea otras preguntas en las etiquetas