Contenido

    Respuesta del servidor 103 Early Hints

    Qué es el código de estado 103 (Early Hints)

    El código de estado HTTP 103, conocido como Early Hints, es un nuevo código que permite a los servidores enviar sugerencias preliminares a los clientes sobre los recursos que pueden ser necesarios para procesar una solicitud. Este mecanismo tiene como objetivo acelerar la carga de las páginas web, ya que los navegadores pueden comenzar a cargar recursos antes de que el servidor complete el procesamiento de la solicitud principal.

    103 - Early Hints

    Definición y objetivos principales

    El código 103 se utiliza para proporcionar a los navegadores información anticipada sobre recursos que podrían ser requeridos, como hojas de estilo, scripts y fuentes. Esto permite a los navegadores pre-cargar estos elementos, mejorando la experiencia del usuario al reducir el tiempo de carga.

    Funcionamiento del código 103 en el contexto de solicitudes HTTP

    Cuando un cliente realiza una solicitud al servidor, este puede responder inicialmente con un código 103, seguido de una serie de encabezados que indican los recursos que deberían ser precargados. Luego, el servidor continúa procesando la solicitud y, una vez completada, envía la respuesta final (como un 200 OK).

    Aplicación del código 103 en la práctica

    Optimización de la carga de páginas

    El uso del código 103 puede ser particularmente efectivo en situaciones donde los recursos son críticos para el renderizado de la página. A continuación, se presentan algunos ejemplos de cómo se puede implementar este código para mejorar el rendimiento.

    • Ejemplo: Pre-carga de fuentes y estilos

      Cuando un navegador recibe un código 103, puede comenzar a cargar fuentes personalizadas y hojas de estilo antes de que se procese la respuesta final. Esto es especialmente útil para sitios con un diseño visual complejo.

    • Ejemplo: Indicación de recursos cacheables

      El servidor puede sugerir recursos que son adecuados para el almacenamiento en caché, permitiendo que el navegador los almacene y los use en futuras visitas, mejorando así la velocidad general.

    Interacción con navegadores y clientes

    Los navegadores modernos tienen la capacidad de manejar respuestas con el código 103. Esto permite una experiencia más fluida al anticipar las necesidades de recursos.

    Cómo los navegadores manejan el código 103

    Al recibir un código 103, el navegador inicia la carga de los recursos indicados antes de recibir la respuesta completa del servidor, lo que puede resultar en una carga más rápida de la página.

    Soporte del código 103 en diferentes navegadores

    Navegador Versión mínima soportada
    Chrome 93
    Firefox 89
    Safari 14
    Edge 93

    Ejemplos de implementación

    Implementación en el servidor usando Node.js

    const http = require('http');
    
    http.createServer((req, res) => {
        res.writeHead(103, {
            'Link': '; rel=preload; as=style',
            'Link': '; rel=preload; as=font'
        });
        // Procesar solicitud
        res.writeHead(200, {'Content-Type': 'text/'});
        res.end('

    Hola Mundo

    '); }).listen(3000);

    En este ejemplo, el servidor envía un código 103 junto con los recursos que deben ser precargados antes de enviar la respuesta final.

    Implementación en el servidor usando Python (Flask)

    from flask import Flask, Response
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        headers = {
            'Link': '; rel=preload; as=style',
            'Link': '; rel=preload; as=font'
        }
        response = Response(status=103)
        response.headers.extend(headers)
        return response
    
    if __name__ == '__main__':
        app.run(debug=True)

    Este código de Flask permite enviar un código 103 y las sugerencias de precarga antes de que se complete la respuesta.

    Implementación en el servidor usando PHP

    http_response_code(103);
    header('Link: ; rel=preload; as=style');
    header('Link: ; rel=preload; as=font');
    
    // Procesar solicitud
    http_response_code(200);
    echo '

    Hola Mundo

    ';

    En este ejemplo, se envía un código 103 desde un servidor PHP, permitiendo que los navegadores comiencen a precargar recursos.

    Problemas potenciales y sus soluciones

    Manejo de errores relacionados con el uso del código 103

    Es fundamental estar preparado para manejar situaciones en las que el cliente no soporte el código 103.

    • Error: El cliente no soporta el código 103

      Algunos navegadores más antiguos pueden no reconocer el código 103 y, en su lugar, deberían recibir una respuesta estándar.

    • Solución: Plan de respaldo para navegadores antiguos

      Es recomendable que los desarrolladores implementen un plan de contingencia, enviando respuestas completas sin el código 103 para navegadores que no lo soporten.

    Cómo evitar el uso incorrecto del código 103

    Utilizar el código 103 de manera inapropiada puede llevar a problemas de rendimiento y confusión en los navegadores. Aquí hay algunas prácticas a seguir:

    • Errores comunes: No enviar encabezados de precarga

      Es esencial incluir encabezados que especifiquen los recursos a precargar, de lo contrario, el código 103 no tendrá efecto.

    • Correcciones: Validar la respuesta

      Antes de implementar el código 103, asegúrate de que los recursos especificados son realmente necesarios y están disponibles.

    Configuración adecuada del servidor para soportar el código 103

    Configuración de servidores web (Nginx, Apache)

    Para habilitar el código 103 en servidores como Nginx o Apache, se deben configurar adecuadamente los módulos y encabezados necesarios.

    Recomendaciones de configuración

    • Para Nginx, asegúrate de que la directiva add_header esté configurada correctamente para incluir los encabezados de precarga.
    • En Apache, utiliza Header set para enviar los encabezados apropiados junto con el código 103.