Etiqueta electrónica:
Una etiqueta de entidad (ETag) es un encabezado HTTP que se utiliza para la validación de caché web y la solicitud condicional de los navegadores a los recursos. El valor de una ETag es un identificador que representa una versión específica del recurso. Además, la ayuda de ETags evita que las actualizaciones simultáneas de un recurso se sobrescriban entre sí. Ejemplo de encabezado ETag es
ETag: "version1"
Nota: el valor del encabezado ETag debe estar entre comillas dobles.
Trabajo de ETag
- El servidor recibe una solicitud HTTP para un recurso en particular.
- El servidor genera una respuesta y adjunta un encabezado ETag. Por ejemplo: ETag: “response_version1”.
- El servidor envía la respuesta con el encabezado anterior con el código de estado 200 . Luego, la aplicación representa el recurso y, al mismo tiempo, almacena en caché la copia del recurso junto con la información del encabezado.
- Posteriormente, la misma aplicación realiza otra solicitud del mismo recurso con el siguiente encabezado de solicitud condicional: If-None-Match: «response_version1»
- Al recibir la solicitud del recurso junto con el encabezado ‘If-None-Match’ , la lógica del lado del servidor compara el valor actual del identificador ETag en el lado del servidor y el que se recibe en el encabezado de la solicitud.
- Si el If-None-Match de la solicitud es el mismo que el valor generado actualmente de ETag en el servidor, se devuelve el código de estado 304 (No modificado) con el cuerpo vacío y la aplicación usa la copia en caché del recurso.
- Si el valor If-None-Match de la solicitud no coincide con el valor actualmente generado/asignado de ETag (por ejemplo, «response_version2») para el mismo recurso, el servidor devuelve el nuevo contenido en el cuerpo junto con el código de estado 200 . El encabezado ‘ETag’ con el nuevo valor también se incluye en la respuesta. La aplicación usa el nuevo recurso y actualiza su caché con los nuevos datos.
Generación de valor de ETag
Eso depende completamente de la aplicación para generarlo como quiera. Se puede crear y actualizar manualmente o se puede generar automáticamente. Los métodos comunes de generación automática incluyen el uso de un hash del contenido del recurso o simplemente un hash de la marca de tiempo de la última modificación. El hash generado debe estar libre de colisiones.
Validación del valor ETag
Es solo una comparación de dos valores. se divide en 2 partes
- Validación fuerte
- Validación débil
1. Validación fuerte:
Las diferentes representaciones de recursos son idénticas byte a byte. Esta es la validación predeterminada de ETag y no se utiliza ninguna directiva especial para ello.
2. Validación débil:
Las dos representaciones de recursos son semánticamente equivalentes. Por ejemplo, la fecha actual que se muestra en la página podría no ser importante para actualizar todo el recurso.
Referencias:
- https://en.wikipedia.org/wiki/HTTP_ETag
- https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag
Publicación traducida automáticamente
Artículo escrito por prakratijoshi2000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA