2.4 Inclusões no protocolo

Quando é essencial que o documento retornado esteja atualizado, é necessário contactar o servidor remoto para cada requisição GET. O protocolo HTTP já contém o método HEAD para retornar a informação do cabeçalho de um documento, mas não o documento em si. Isto é útil para checar se o documento foi modificado desde o último acesso.

Entretanto, nos casos em que o documento foi alterado, seria muito ineficiente fazer uma segunda conexão para o servidor remoto para conseguir executar o comando GET do documento. O overhead de fazer a conexão é freqüentemente considerável.

O protocolo HTTP foi então modificado para conter uma requisição do tipo If-Modified-Since que torna possível fazer uma requisição GET condicional. Esta é essencialmente a mesma requisição GET exceto pelo cabeçalho que contém a data e hora que o objeto está armazenado no cliente (no nosso caso, no cache do proxy).

Se o documento não foi modificado desde a data e a hora especificada ele não será retornado. O cliente receberá como resposta apenas informações relevantes como a nova data de expiração com um código de resultado especial. Se, caso contrário, o documento foi modificado, ele será retornado como se a requisição fosse um GET normal.

O GET condicional faz que vários tipos de utilitários se tornem mais eficientes. Ele pode ser usado por software de mirroring que tem que fazer refresh de um grande número de arquivos em uma base regular. O proxy pode fazer refresh de seu cache durante períodos de inatividade e não apenas quando um documento explicitamente expira.

Embora o GET condicional seja compatível com o antigo, isso de nada adianta. O protocolo HTTP é definido de forma que campos de cabeçalho desconhecidos sejam ignorados. Se o servidor HTTP remoto não suportar o GET condicional nenhum erro será retornado: ele simplesmente retornará todo o arquivo como se a requisição se tratasse de um GET comum. Felizmente todos os grandes servidores HTTP já suportam o GET condicional.

O mecanismo de cache é baseado em disco, que significa que o boot do proxy ou da própria máquina nada lhe afetará. Devido a este detalhe, o cache abre novas possibilidades quando o proxy e um cliente Web estão na mesma máquina. O proxy pode ser configurado para usar somente o cache local, possibilitando a realização de demonstrativos sem uma conexão internet. Você pode até desplugar um notebook e levá-lo ao bar.