Você está na página 1de 4

DEBUG HEADERS

A depuração do comportamento das regras da CDN é feita através dos DEBUG HEADERS, que são headers
adicionados pela CDN no RESPONSE de uma requisição. Para que CDN inclua esses headers, precisamos
solicitar através do envio de um header específico no REQUEST.

ADICIONANDO OS DEBUG HEADERS


O header a ser inserido no request, deve ter o nome “x-ec-debug” com conteúdo “x-ec-cache, x-ec-check-
cacheable, x-ec-cache-key, x-ec-cache-state”.

Usando os Headers no Navegador


Existem várias extensões de navegador para injetar um header no request e você pode utilizar a extensão
de sua preferência. Para esse tutorial vamos adotar o ModHeader.

Após a instalação, adicione x-ec-debug na coluna Name e x-ec-cache, x-ec-check-cacheable, x-ec-cache-


key, x-ec-cache-state na coluna Value. O checkbox no início da linha permite habilitar ou desabilitar a
injeção desse header.

Note que você pode utilizar a ferramenta para adicionar o header que desejar, como por exemplo, o
header “Host” para acessar um servidor de origem pelo seu endereço IP.

A extensão permite a adição de diversos perfis. No caso acima, esse perfil está nomeado como “Debug
Headers”. Novos headers podem ser adicionados ao clicar no “+” e novos perfis, acessando o menu no
canto superior esquerdo.

Algumas extensões similares não funcionam com o navegador em modo anônimo. O ModHeader
funciona no Firefox, mas ao acessar a extensão nesse modo, ele não traz nenhuma configuração. Nesse
caso, basta acessar o menu e selecionar Cloud Backup para restaurar a última configuração.

O Cloud Backup também útil para recuperar a última configuração após uma limpeza completa dos dados
do navegador.

(Ver: 10/03/20) 1
Usando os headers no curl
Outra opção para visualizar os headers é com o uso do curl com o parâmetro “-H” para adicionar
headers:
~$ curl -I -H "x-ec-debug: x-ec-cache, x-ec-check-cacheable, x-ec-cache-key, x-ec-cache-state"
https://www.cdnverizon.com.br
HTTP/2 200
content-encoding: gzip
accept-ranges: bytes
access-control-allow-origin: *
age: 484889
alt-svc: quic=":443"; ma=2592000; v="49,48,46,43"
cache-control: max-age=604800
content-type: text/html; charset=UTF-8
date: Tue, 10 Mar 2020 14:08:10 GMT
expires: Tue, 17 Mar 2020 14:08:10 GMT
last-modified: Wed, 04 Mar 2020 23:26:42 GMT
server: ECAcc (spb/E50F)
x-cache: HIT
x-ec-cache: TCP_HIT from ECAcc (spb/E50F)
x-ec-cache-key: //https/8072276/www.cdnverizon.com.br/:/hs-3742166924979624929
x-ec-cache-state: max-age=604800 (7d); cache-ts=1583364401 (Wed, 04 Mar 2020 23:26:41 GMT); cache-
age=484889 (5d 14h 41m 29s); remaining-ttl=119911 (1d 9h 18m 31s); expires-delta=none
x-ec-check-cacheable: YES
x-policy: 191210-01
x-powered-by: PHP/5.6.31
x-rule: Policy for /
content-length: 10763

Se você usa Linux, pode adicionar a função abaixo no arquivo .bashrc para servir como um atalho.
crl() {
curl $* -H "x-ec-debug: x-ec-cache, x-ec-check-cacheable, x-ec-cache-key, x-ec-cache-state" -
skvo /dev/null -A "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0" -
L 2>&1 | grep "<"
}

Para usar, basta chamar a função passando a url:


~$ crl https://www.cdnverizon.com.br

(Ver: 10/03/20) 2
INSPECIONANDO OS CABEÇALHOS
Para inspecionar os headers no navegador, precisamos ver as requisições através do Developer Tools. O
print abaixo foi feito no Firefox, mas no Chrome é bem parecido.

Para abrir o Developer Tools, pressione F12 (tanto no Chrome como no Firefox) e acesse o site desejado.

1. Clique em Rede para visualizar todas as requisições.


2. Clique na requisição que deseja analisar. No exemplo acima, selecionamos a página home (“/”).
3. Ao selecionar a requisição, podemos ver alguns detalhes da chamada, como por exemplo, a URL
do objeto e o endereço IP acessado.
4. Na seção de Response Headers, podemos ver os headers enviados pelo servidor e pela CDN.
(Dica: No Firefox, você pode “ligar” o botão Raw headers para visualizar todos os dados de cada
cabeçalho).
5. Os tipos de objetos requisitados podem ser filtrados. Garanta que “ALL” esteja selecionado para
visualizar todas as requisições.
6. Se Persistir Logs estiver habilitado, o Developer Tools não limpa a lista de requisições entre as
transições de páginas. Mantenha Disable Cache habilitado para evitar a cache do navegador
(embora o mais seguro seja limpar todos os dados da cache antes de analisar um site).

(Ver: 10/03/20) 3
INTERPRETANDO OS HEADERS
O header x-ec-cache nos informa o comportamento da CDN para esse objeto analisado e pode retornar
os valores abaixo:
 TCP_HIT: O objeto estava em cache, não teve o max-age excedido e foi servido pela cache.
 NONE: A requisição foi simplesmente repassada para o servidor de origem por não ser passível de
cacheamento. Por exemplo, uma requisição do tipo PUT.
 CONFIG_NOCACHE: O objeto não estava em cache por restrição de regras de configuração e a
resposta foi fornecida pelo servidor de origem.
 UNCACHEABLE: Algumas características na resposta do servidor de origem previnem o
cacheamento, como por exemplo, o uso da diretiva "Cache-Control: no-cache", enviada no
header pelo servidor de origem.
 TCP_MISS: O objeto não estava em cache e a resposta foi fornecida pelo servidor de origem.
Dependendo da resposta do servidor, um novo objeto pode ser criado em cache.
 TCP_EXPIRED_HIT: O objeto estava em cache, mas com seu max-age excedido e uma revalidação
no servidor de origem resultou no objeto em cache inalterado.
 TCP_EXPIRED_MISS: O objeto estava em cache, mas com seu max-age excedido e uma
revalidação no servidor de origem resultou no objeto em cache substituído por uma nova
resposta do servidor.

O header x-ec-cache-key, informa a chave de cacheamento do objeto. O conceito é semelhante a um


campo de Index de uma tabela de banco de dados.

Os dados de tempos de cacheamento são fornecidos no header x-ec-cache-state e para facilitar o


entendimento, observe o exemplo a seguir. Note que esse header só é retornado se o objeto for passível
de cacheamento.

Exemplo:
x-ec-cache-state: max-age=604800 (7d); cache-ts=1571358042 (Fri, 18 Oct 2019 00:20:42
GMT); cache-age=480500 (5d 13h 28m 20s); remaining-ttl=124300 (1d 10h 31m 40s);
expires-delta=none

 max-age: exibe o tempo de cacheamento configurado para o objeto: 7 dias ou 604800 segundos.
 catche-ts: time stamp de quando o objeto foi cacheado: 1571358042 (Fri, 18 Oct 2019 00:20:42
GMT)
 cache-age: tempo decorrido desde o cacheamento do objeto: 480500 segundos ou 5d 13h 28m
20s.
 remaining-ttl: tempo de vida restante em cache até a próxima revalidação.

O header x-ec-check-cacheable simplesmente informa se esse request poderia ser cacheado.

Para maiores informações acesse o Knowlege Base.

(Ver: 10/03/20) 4

Você também pode gostar