É possível enviar uma solicitação HTTP apenas para obter a última vez modificada?
Pergunta
Em vez do arquivo em si?
Editar
Best com uma demo em PHP?
Solução
<?php
// Get Headers
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://example.com/');
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
// Process Headers
$headerLines = explode("\r\n", $response);
foreach ($headerLines as $headerLine) {
$headerLineParts = explode(': ', $headerLine);
if (count($headerLineParts) >= 2) {
$headers[$headerLineParts[0]] = $headerLineParts[1];
}
}
echo $headers['Last-Modified'];
?>
Outras dicas
Sim. A "cabeça" método retorna apenas os cabeçalhos de resposta e não os dados reais.
Você pode usar a função get_headers do php
$a = get_headers('http://sstatic.net/so/img/logo.png');
print_r($a);
Em seu pedido HTTP você deve adicionar qualquer um dos esses atributos de cabeçalho, e você pode receber uma 304 (modificada)
- If-Modified-Since
- If-None-Match
- Se-Unmodified-Since
Andrei está correto, HEAD só vai conseguir os cabeçalhos. Minha sugestão retornará apenas o cabeçalho e nenhum corpo se os se condições sejam atendidas. Se o conteúdo foi atualizado o corpo irá conter as novas informações.
Você precisa escrever algum serviço para manipular a solicitação HTTP e extrair a data da última modificação para o arquivo solicitado e retornar a data em resposta.