Embora a declaração do w3d de que tanto o F5 quanto o enter usem o cache seja tecnicamente verdadeira, ele é enganoso. O diabo está nos detalhes.
Ao pressionar enter, o navegador pode carregar quaisquer recursos do cache sem reverificá-los, dependendo do tempo de expiração (http Expires
header) e outros cabeçalhos http. Isso significa que a maioria dos recursos pode ser carregada com a rapidez com que o disco ou a RAM pode responder, potencialmente menos de 1 ms, se o recurso estiver na RAM.
Pressionar F5, por outro lado, sempre enviará uma solicitação ao servidor com um cabeçalho de solicitação If-Modified-Since
com o registro de data e hora da versão em cache do recurso atualmente em cache. O servidor responderá com um código de status 200 OK
seguido pelos dados ou um código de status 304 Not Modified
. Para um recurso estático, isso provavelmente será um 304
status e o navegador carregará o recurso do cache. Em outras palavras, o navegador não tem permissão para carregar o recurso do cache até obter uma resposta do servidor. Portanto, ao pressionar F5, mesmo que o recurso não seja totalmente retransmitido, o tempo de carregamento do recurso ainda estará sujeito à latência da rede e ao tempo de resposta do servidor. Isso pode levar de 50 a 100 ms ou mais por recurso.
Esse comportamento pode ser observado com a função de rede das ferramentas de desenvolvimento internas dos navegadores. Você mesmo pode abrir as ferramentas de desenvolvimento pressionando control + deslocamento + I , selecionando rede e observando o que acontece quando você recarrega a página nos diferentes maneiras. No Chrome, você verá que, ao pressionar Enter, os recursos carregados diretamente do cache terão status 200 OK
e tamanho (from cache)
. No Firefox, os recursos carregados diretamente do cache nem são mostrados na exibição de rede. Ao pressionar F5, por outro lado, as solicitações são enviadas ao servidor para todos os recursos, que geralmente respondem com um status 304
.