Http 的 1.0
Pregunta 1: Conexión corta
http se basa en el protocolo Tcp, debido a que es una conexión corta, cada conexión http; y desconexión corresponderá al protocolo de enlace Tcp de tres vías, conexión de inicio lento y desconexión de cuatro ondas. (Se puede resolver configurando Conexión: mantener vivo)
Problema 2: bloqueo
El número de solicitudes simultáneas iniciadas por el cliente es fijo y, si hay demasiadas solicitudes, se pondrá en cola y se bloqueará.
Optimización de http 1.1
Optimización 1: conexión larga
Un canal de conexión Tcp puede paralelamente múltiples solicitudes http y se cierra. Pero el servidor aún procesa el orden de las solicitudes de los clientes. Entonces el servidor aún se bloqueará.
Optimización 2: optimización de caché
El procesamiento de caché, en HTTP1.0, If-Modified-Since y Expires en el encabezado se utilizan principalmente como criterios para el juicio de caché, HTTP1.1 introduce más estrategias de control de caché como la etiqueta de entidad, If-Unmodified-Since, If-Match, If-None-Match y más encabezados de caché opcionales están disponibles para controlar la estrategia de caché.
Optimización 3: Gestión de notificaciones de errores.
Se agregaron 24 códigos de respuesta de estado de error en HTTP1.1. Por ejemplo, 409 (Conflicto) indica que el recurso solicitado entra en conflicto con el estado actual del recurso; 410 (Desaparecido) indica que un recurso en el servidor se elimina permanentemente
Optimización 4: nuevo método de solicitud
PUT: solicitar al servidor que almacene un recurso;
BORRAR: solicitar al servidor que elimine el recurso identificado;
OPCIONES: solicitar para consultar el rendimiento del servidor, o consultar las opciones y requisitos relacionados con el recurso;
TRACE: solicitar al servidor que devuelva la información de la solicitud recibida, principalmente para pruebas O diagnóstico;
CONNECT: reservado para uso futuro
Optimización 5: optimización del host
Optimización de host agregada, a través de diferentes hosts puede admitir el servicio, una IP corresponde a múltiples hosts virtuales.
Optimización 6: optimización de carga reanudable
Se introduce el campo de encabezado de rango, que permite que solo se solicite una determinada parte del recurso, es decir, el código de retorno es 206 (Partial Content), lo que facilita la libre elección de los desarrolladores para hacer un uso completo del ancho de banda y las conexiones.
Optimización Http2.0
Optimización 1: Totalmente multiplexado
El cliente y el servidor pueden iniciar o responder en paralelo para evitar el bloqueo causado por la serialización.
Optimización 2: compresión de mensajes
Más algoritmos de compresión y transmisión optimizada de campos repetidos como cookies
Optimización 3: Encuadre binario
Capa de encuadre binaria agregada. Entre la capa http y tcp, el marco se puede desordenar y ensamblar en el otro extremo.
Optimización 4: inserción del servidor
Una solicitud al cliente, múltiples respuestas
Solicitar ejemplos y análisis
// 请求
GET / HTTP/1.1
Host:xxx.xxxx.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.10) Gecko/2016042316 Firefox/3.0.10
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
If-Modified-Since: Mon, 25 May 2016 03:19:18 GMT
//响应
HTTP/1.1 200 OK
Cache-Control: private, max-age=30
Content-Type: text/html; charset=utf-8
Content-Encoding: gzip
Expires: Mon, 25 May 2016 03:20:33 GMT
Last-Modified: Mon, 25 May 2016 03:20:03 GMT
Vary: Accept-Encoding
Server: Microsoft-IIS/7.0
X-AspNet-Version: 2.0.50727
X-Powered-By: ASP.NET
Date: Mon, 25 May 2016 03:20:02 GMT
Content-Length: 12173
Significado del código de estado
Códigos de estado HTTP 1.1 y su significado
El código de estado consta de tres dígitos. El primer dígito define la categoría de respuesta y hay cinco valores posibles:
1xx: Mensaje de indicación: indica que se ha recibido la solicitud, continuar procesando
2xx: Correcto: indica que la solicitud se ha recibido, comprendido y aceptado correctamente.
3xx: Se debe realizar una acción de redireccionamiento adicional para completar la solicitud
4xx: error de cliente: la solicitud tiene un error de sintaxis o la solicitud no se puede cumplir
5xx: error del lado del servidor: el servidor no pudo cumplir con una solicitud legítima
Referencia:
https://www.jianshu.com/p/52d86558ca57
https://www.debugger.wiki/article/html/1565502376358922
https://juejin.im/entry/6844903489596833800
https://blog.csdn.net / zhglance / article / details / 76162176
https://github.com/Advanced-Frontend/Daily-Interview-Question/issues/232