Pergunta rápida do 'novo usuário' do CloudFlare para você:
INTRODUÇÃO: As páginas HTML servidas pelo meu servidor de origem nunca são alteradas. Todo o conteúdo dinâmico é baixado via JavaScript depois que a página é carregada no navegador do usuário. O conteúdo dinâmico derivado do JavaScript depende em parte da sequência de consultas da URL, mas a sequência de consultas em si não afeta o conteúdo HTML baixado originalmente. Os seguintes URLs, portanto, geram exatamente o mesmo HTML a partir da origem antes de serem usados pelo JavaScript no navegador:
https://www.example.com/private/my-investments?portfolioID=296
https://www.example.com/private/my-investments?portfolioID=325
https://www.example.com/private/my-investments?portfolioID=319
PERGUNTA: Como o CloudFlare não armazena em cache o HTML por padrão, como devo construir minhas Regras da página para que uma única cópia em cache de https://www.example.com/private/my-investments?[anyValue] seja retornada a todos os usuários ? Aqui está o que eu tentei:
"CACHE TUDO:" Usar a diretiva 'Cache Tudo' faz com que meu HTML seja armazenado em cache (bom), mas ele usa toda a cadeia de caracteres de consulta como parte da chave do cache (incorreta). Portanto, se um usuário acessar o seguinte URL ...
https://www.example.com/private/my-investments?portfolioID=296
... e, dez segundos depois, atinge o mesmo URL com uma string de consulta diferente, como:
https://www.example.com/private/my-investments?portfolioID=325
... O CloudFlare trata essa última solicitação como uma MISS de cache (cf-cache-status: MISS) e atinge meu servidor de origem novamente. Isso apesar do HTML retornado da origem ser idêntico para os dois URLs.
"IGNORE QUERY STRING CACHING:" Pensei em corrigir esse problema selecionando a opção "IGNORE QUERY STRING CACHING". Porém, ao usar esta opção em uma regra de página, nenhum HTML é armazenado em cache; Somente arquivos .js, .css e .png são armazenados em cache. E mais uma vez, minha origem é atingida em cada chamada de dados HTML. :(
Sinto que devo estar perdendo algo óbvio. Alguma ideia?
ATUALIZAÇÃO : Teve uma idéia que eu gostaria de executar por você. Posso resolver esse problema alterando meu esquema de URL interno para usar '#' em vez de '?' Então, em vez de um URL como ...
https://www.example.com/private/my-investments?portfolioID=296
..Eu usaria algo como:
https://www.example.com/private/my-investments#portfolioID=296
Isso impediria que os parâmetros da string de consulta fossem transmitidos ao CloudFlare ... O que você acha?
Festus
fonte
Respostas:
(Resposta adicionada ao @Festus Martingale para marcar a pergunta como respondida).
Substituir
?
por#
resolvido o problema, pois impede que a cadeia de consulta seja transmitida para o cloudflare, pois ela aparece como um fragmento de hash.fonte