Español

Herramientas de desarrollo · Convertidor de marca de tiempo Unix

Comprobar la fecha de caducidad de una cookie o caché antes de enviarla

· Por qué es importante

marcas de tiempo depuración desarrollo web

Un marcador de vencimiento verificado con una línea de tiempo UTC antes de la implementación
Ilustración de vector original de ToolAcre

Los valores de caducidad se calculan, rara vez se leen y son erróneos de tal manera que solo aparecen más tarde. Esta publicación enumera los lugares donde aparecen las épocas absolutas (Redis, Memcached, URL firmadas, cookies) y muestra cómo verificar una antes de que llegue a producción.

El caché que expiró instantáneamente: un vencimiento calculado escrito en la unidad incorrecta y una tasa de aciertos que cayó a cero

Una tasa de aciertos de caché que colapsa inmediatamente después de la implementación puede deberse a una caducidad calculada en una escala incorrecta. La caché se comporta correctamente cuando recibe un instante hace décadas. Antes de ajustar la memoria o el desalojo, inspeccione el número exacto enviado por la ruta de implementación.

Compárelo con el tiempo de implementación y la vida útil prevista. ToolAcre puede representar segundos y milisegundos explícitamente, haciendo visible una discrepancia del factor-1,000. Mantenga el comando o la configuración sin formato al lado del resultado; reemplazar manualmente el valor en producción sin fijar su cálculo garantiza la recurrencia.

Compruebe si las entradas fallidas se crearon con la nueva versión mientras que las entradas más antiguas aún aparecen. Esa correlación puede aislar el cálculo de la caducidad de la presión de desalojo no relacionada.

Donde aparecen las caducidades absolutas: Redis EXPIREAT versus PEXPIREAT, regla de treinta días de Memcached, parámetros de caducidad de URL firmadas y atributos de caducidad de cookies.

Los vencimientos absolutos aparecen en muchos sistemas, pero sus unidades y reglas de borde no son intercambiables. El libro de trabajo enumeraba varios productos con nombre; el repositorio de marcas de tiempo no implementa ni documenta sus protocolos. Verifique cada comando, parámetro de consulta o atributo con su contrato autorizado antes de aplicar una época.

El diagnóstico compartido sigue siendo válido: capturar lo enviado, identificar si nombra un instante, indicar su unidad y convertirlo. Evite transferir una regla de un comando de caché a otro porque sus nombres parecen similares. Una fecha convertida correctamente aún puede no ser válida para la API de destino.

Las API con vencimiento absoluto difieren; verificar la tienda específica, el firmante de URL o el contrato de cookies

Un TTL relativo responde "¿cuánto falta para la operación?" mientras que una época absoluta responde “¿en qué instante?” Agregar un TTL a la hora actual produce un valor absoluto; enviar el TTL original a un campo absoluto lo coloca cerca de la época. Enviar un recuento absoluto a un campo relativo puede conservar los datos durante mucho más tiempo del previsto.

Nombre las variables por su semántica, como `ttlSeconds` y `expiresAtMs`, y conviértalas en el sitio de llamada cuyo contrato se conoce. Las pruebas deben congelar el reloj de referencia para que el vencimiento esperado sea determinista. Evite afirmar simplemente que el resultado es mayor que ahora; que puede pasar valores con tiempos de vida tremendamente incorrectos.

Trampas de zona horaria en vencimiento: un vencimiento destinado a la 'medianoche' calculado en la zona del servidor en lugar de la del usuario o UTC

“Expirar a medianoche” está incompleto hasta que se nombre la zona de medianoche. La medianoche UTC, la hora local del servidor y la medianoche local de un usuario pueden ser instantes diferentes e incluso fechas del calendario diferentes. El selector de fecha y hora de ToolAcre trata una fecha y hora sin zona como la hora local del navegador y así lo dice.

Para el vencimiento de la infraestructura, una fecha y hora UTC explícita a menudo elimina la dependencia ambiental. Para una política de usuario, conserve la zona con nombre prevista en la capa de programación antes de resolver un instante. El convertidor puede inspeccionar la época resuelta, pero no elige a qué medianoche se refería el requisito.

Almacene la frase de política y el instante resuelto por separado durante la depuración. Esto expone si el desacuerdo comenzó en la interpretación de requisitos o en la aritmética de épocas posteriores.

“Medianoche” necesita una interpretación explícita antes de que se convierta en un instante de vencimiento

Imagine una versión en `2025-02-03T10:30:00Z` que debería caducar exactamente un día después. El valor absoluto esperado es 1,738,668,600 segundos o 1,738,668,600,000 milisegundos, lo que produce `2025-02-04T10:30:00.000Z`. Convierta la salida del script a su unidad declarada y compárela.

Un valor de 86,400 en un campo de segundos absolutos se representaría como 1970-01-02, lo que revelaría que se envió una duración sin agregar el instante de lanzamiento. Un valor multiplicado dos veces por 1,000 puede quedar fuera del rango de fechas. Ambos fallos son más informativos que una métrica genérica de "caché perdido".

El delta de un día se puede afirmar directamente como 86,400 segundos. Esta verificación de duración permanece estable incluso si la representación local de un revisor difiere del cronograma de implementación UTC.

Ejemplo resuelto: inspeccionar una caducidad absoluta desde un script de implementación

Antes de fusionar, exponga el valor calculado en una prueba unitaria o en un simulacro de salida e inspeccione como una fecha. También reste el instante de referencia conocido para confirmar la vida útil prevista. Estos dos controles detectan errores diferentes: una fecha plausible en el mes equivocado y una fecha correcta alcanzada por frágiles suposiciones locales.

Utilice accesorios fijos en lugar del reloj de pared en las afirmaciones. Luego, pruebe el límite de serialización real para que un cliente no vuelva a convertir un valor de segundos. ToolAcre sirve como un control humano independiente, no como la única defensa automatizada.

Lo que esto no cubre: formato de fecha HTTP para encabezados Expires, que utiliza un formato textual en lugar de una época.

Algunas interfaces de vencimiento utilizan formatos de fecha textuales en lugar de épocas. Este repositorio genera ISO para visualización y analiza entradas compatibles con fechas, pero no genera fechas de encabezado específicas del protocolo. Un número convertido correctamente no prueba que un encabezado textual tenga la gramática o etiqueta de zona requerida.

Siga formateando en un adaptador probado y dedicado para ese protocolo. No pegue una cadena humana en un campo numérico ni asuma que una salida ISO puede reemplazar cada formato de cable. El instante de vencimiento y su serialización son capas separadas y cada una merece su propia verificación de contrato.

Los formatos de vencimiento textuales son contratos separados de épocas numéricas

Cada vencimiento absoluto debe leerse una vez como una fecha humana antes del lanzamiento. Esa breve verificación detecta errores de interpretación de unidad, duración versus instante y medianoche mientras el código aún es revisable. También crea un resultado esperado concreto para las pruebas de regresión.

Utilice el convertidor con la unidad de destino explícita, compare UTC con la política y corrija el cálculo en lugar del síntoma almacenado. Un vencimiento legible no es prueba suficiente de la corrección de la API objetivo, pero uno ilegible nunca debería llegar a producción sin ser detectado.

Adjunte el instante ISO esperado a la revisión de cambios, pero mantenga la afirmación ejecutable numérica. La revisión humana y la regresión mecánica protegen partes complementarias del límite.