turicas/brasil.io

Corrigir cabeçalhos HTTP para que cache da CloudFlare funcione

Open

#341 opened on Jun 28, 2020

View on GitHub
 (3 comments) (0 reactions) (0 assignees)Python (150 forks)github user discovery
enhancementhelp wantedinfra

Repository metrics

Stars
 (1,032 stars)
PR merge metrics
 (PR metrics pending)

Description

Por algum motivo as requisições à API estão indo todas para o servidor. Mesmo com o cabeçalho Cache-Control sendo devolvido pelo Django, a CDN (CloudFlare) adiciona o cabeçalho CF-Cache-Status: DYNAMIC, que indica que a requisições chegou até o servidor (veja mais detalhes).

Como a quantidade de requisições à API é muito maior que ao site, precisamos corrigir esse comportamento para que a CDN segure boa parte das requisições.

$ wget -O /dev/null --server-response https://brasil.io/api/dataset/covid19/caso/data/
--2020-06-28 20:11:49--  https://brasil.io/api/dataset/covid19/caso/data/
Resolving brasil.io (brasil.io)... 2606:4700:20::ac43:472d, 2606:4700:20::681a:9af, 2606:4700:20::681a:8af, ...
Connecting to brasil.io (brasil.io)|2606:4700:20::ac43:472d|:443... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 200 OK
  Date: Sun, 28 Jun 2020 23:11:50 GMT
  Content-Type: application/json
  Transfer-Encoding: chunked
  Connection: keep-alive
  Set-Cookie: __cfduid=d9bafd491b892cdb3ccedda6c2f2ca9b41593385910; expires=Tue, 28-Jul-20 23:11:50 GMT; path=/; domain=.brasil.io; HttpOnly; SameSite=Lax; Secure
  Vary: Accept-Encoding
  Vary: Accept, Cookie, Origin
  Allow: GET, HEAD, OPTIONS
  X-Frame-Options: DENY
  Expires: Sun, 28 Jun 2020 23:25:13 GMT
  Cache-Control: max-age=900
  X-Content-Type-Options: nosniff
  Strict-Transport-Security: max-age=15724800; includeSubdomains
  CF-Cache-Status: DYNAMIC
  cf-request-id: 039ecc97a00000f5eb5f2a0200000001
  Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
  Server: cloudflare
  CF-RAY: 5aab16d29d61f5eb-GRU
  alt-svc: h3-27=":443"; ma=86400, h3-28=":443"; ma=86400, h3-29=":443"; ma=86400
Length: unspecified [application/json]
Saving to: ‘/dev/null’

Contributor guide