Ferramentas para desenvolvedores · Conversor de carimbo de data/hora Unix
Verificando a época de expiração de um cookie ou cache antes de enviá-lo
· Por que é importante
carimbos de data/hora depuração desenvolvimento web
Os valores de expiração são calculados, raramente lidos e errados de maneiras que só aparecem mais tarde. Esta postagem lista os locais onde as épocas absolutas aparecem (Redis, memcached, URLs assinados, cookies) e mostra como verificar uma antes que ela chegue à produção.
O cache que expirou instantaneamente — uma expiração computada escrita na unidade errada e uma taxa de acerto que caiu para zero
Uma taxa de acertos de cache que cai imediatamente após a implantação pode ser resultado de uma expiração calculada na escala errada. O cache está se comportando corretamente quando recebe um instante de décadas atrás. Antes de ajustar a memória ou despejo, inspecione o número exato enviado pelo caminho de implantação.
Compare-o com o tempo de implantação e a vida útil pretendida. ToolAcre pode renderizar segundos e milissegundos explicitamente, tornando visível uma incompatibilidade de fator de 1,000. Mantenha o comando ou configuração bruta ao lado do resultado; substituir manualmente o valor na produção sem fixar seu cálculo garante a recorrência.
Verifique se as entradas com falha foram criadas com a nova versão enquanto as entradas mais antigas ainda foram atingidas. Essa correlação pode isolar o cálculo da expiração da pressão de despejo não relacionada.
Onde aparecem expirações absolutas — Redis EXPIREAT versus PEXPIREAT, regra de trinta dias do memcached, parâmetros de expiração URL assinados e atributos de expiração de cookie
Expirações absolutas aparecem em muitos sistemas, mas suas unidades e regras de borda não são intercambiáveis. A apostila listava vários produtos nomeados; o repositório de carimbo de data/hora não implementa ou documenta seus protocolos. Verifique cada comando, parâmetro de consulta ou atributo com seu contrato oficial antes de aplicar uma época.
O diagnóstico compartilhado continua válido: capturar o que foi enviado, identificar se nomeia um instante, indicar sua unidade e convertê-lo. Evite transferir uma regra de um comando de cache para outro porque seus nomes são semelhantes. Uma data convertida corretamente ainda pode ser inválida para o destino API.
As APIs de expiração absoluta são diferentes; verificar a loja específica, signatário URL ou contrato de cookie
Um parente TTL responde “quanto tempo falta para a operação?” enquanto uma época absoluta responde “em que instante?” Adicionar TTL à hora atual produz um valor absoluto; enviar o TTL original para um campo absoluto o coloca próximo à época. Enviar uma contagem absoluta para um campo relativo pode preservar os dados por muito mais tempo do que o pretendido.
Nomeie variáveis para sua semântica, como `ttlSeconds` e `expiresAtMs`, e converta no site de chamada cujo contrato é conhecido. Os testes devem congelar o relógio de referência para que a expiração esperada seja determinística. Evite afirmar apenas que o resultado é maior do que agora; que pode passar valores com tempos de vida totalmente errados.
Interrupções de fuso horário na expiração — uma expiração destinada a 'meia-noite' calculada na zona do servidor, e não na do usuário ou UTC
“Expirar à meia-noite” está incompleto até que a zona da meia-noite seja nomeada. Meia-noite UTC, horário local do servidor e meia-noite local de um usuário podem ser instantes diferentes e até mesmo datas de calendário diferentes. O seletor de data e hora de ToolAcre trata uma data e hora sem zona como a hora local do navegador e diz isso.
Para a expiração da infraestrutura, uma data e hora UTC explícita muitas vezes elimina a dependência ambiental. Para uma política de usuário, retenha a zona nomeada pretendida na camada de agendamento antes de resolver um instante. O conversor pode inspecionar a época resolvida, mas não escolhe a qual meia-noite o requisito se refere.
Armazene a frase de política e o instante resolvido separadamente durante a depuração. Isso expõe se o desacordo começou na interpretação dos requisitos ou na aritmética da época subsequente.
“Meia-Noite” precisa de uma interpretação explícita antes de se tornar um instante de expiração
Imagine uma liberação em `2025-02-03T10:30:00Z` que deveria expirar exatamente um dia depois. O valor absoluto esperado é 1,738,668,600 segundos ou 1,738,668,600,000 milissegundos, resultando em `2025-02-04T10:30:00.000Z`. Converta a saída do script em sua unidade declarada e compare.
Um valor de 86,400 em um campo de segundos absolutos seria renderizado como 1970-01-02, revelando que uma duração foi enviada sem adicionar o instante de liberação. Um valor multiplicado duas vezes por 1,000 pode estar fora do intervalo de datas. Ambas as falhas são mais informativas do que uma métrica genérica de “perda de cache”.
O delta do dia inteiro pode ser declarado diretamente como 86,400 segundos. Essa verificação de duração permanece estável mesmo se a renderização local de um revisor for diferente do cronograma de implantação UTC.
Exemplo resolvido: inspecionar uma expiração absoluta de um script de implantação
Antes de mesclar, exponha o valor calculado em um teste de unidade ou saída de simulação e inspecione-o como uma data. Subtraia também o instante de referência conhecido para confirmar o tempo de vida pretendido. Estas duas verificações detectam erros diferentes: uma data plausível no mês errado e uma data correcta alcançada por suposições locais frágeis.
Use luminárias fixas em vez do relógio de parede nas afirmações. Em seguida, teste o limite real de serialização para que um valor de segundos não seja convertido novamente por um cliente. ToolAcre serve como uma verificação humana independente, não como a única defesa automatizada.
O que isso não cobre - formatação de data HTTP para cabeçalhos Expires, que usa um formato textual em vez de uma época
Algumas interfaces de expiração usam formatos de data textuais em vez de épocas. Este repositório gera ISO para exibição e analisa entradas compatíveis com data, mas não gera datas de cabeçalho específicas do protocolo. Um número convertido corretamente não prova que um cabeçalho textual tenha a gramática ou rótulo de zona exigido.
Continue a formatação em um adaptador testado e dedicado para esse protocolo. Não cole uma string humana em um campo numérico nem presuma que uma saída ISO pode substituir todos os formatos de ligação. O instante de vencimento e sua serialização são camadas separadas e cada uma merece sua própria verificação de contrato.
Os formatos de expiração textual são contratos separados das épocas numéricas
Cada vencimento absoluto deve ser lido uma vez como uma data humana antes do lançamento. Essa breve verificação detecta erros de interpretação de unidade, duração versus instante e meia-noite enquanto o código ainda pode ser revisado. Também cria um resultado concreto esperado para testes de regressão.
Use o conversor com a unidade de destino explícita, compare UTC com a política e corrija o cálculo em vez do sintoma armazenado. Uma expiração legível não é prova suficiente da correção do alvo-API, mas uma expiração ilegível nunca deve chegar à produção despercebida.
Anexe o instante ISO esperado à revisão da mudança, mas mantenha a asserção executável numérica. A revisão humana e a regressão da máquina protegem então partes complementares da fronteira.