Como detectar se este é um cache do ISP / Servidor?

1

Antes de começarmos: sou um noob.

Estou tentando acessar o YQL para obter algumas informações. Agarrá-lo usando o file_get_contents do PHP é bastante simples, mas parece que o ISP do cliente ou o servidor está armazenando a resposta em cache. Para ilustrar o problema, tente carregar:

-

Atualize essa página algumas vezes - observe que a sequência 'criada' não é alterada - deve demorar alguns segundos cada vez que você atualizar, como este exemplo de teste:

-

Agora, minha pergunta é, isso é algum tipo de truque pelo administrador de sistema para armazenar em cache as coisas, ou algo que o ISP faz? Posso contornar isso? Eu preciso acessar o YQL via URL porque preciso analisá-lo.

(O sysadmin é difícil de alcançar)

Obrigado antecipadamente.

EDITAR

Eu descobri como contornar o cache. Você pode randomizar string e usar o truque mencionado pelo @Coops abaixo, ou usar o código aqui. Na maioria das vezes, você pode pular o cache enviando o cabeçalho Pragma: no-cache, criar um contexto e usá-lo:

// Create a stream
$opts = array(
    'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Pragma: no-cache"
    )
);

$context = stream_context_create($opts);

// Open the file using the HTTP headers set above
$file = file_get_contents('http://example.com');

Ainda não consigo descobrir se o cache está configurado pelo sysadmin ou pelo ISP.

    
por rickchristie 03.03.2011 / 11:19

1 resposta

1

Você pode verificar alguns cabeçalhos específicos das respostas: Age , Expires , ETag , Via . Os valores desses cabeçalhos podem ajudá-lo a determinar o que você precisa. Para obter detalhes e descrições de cabeçalhos, consulte a seção Responses em Lista de cabeçalhos HTTP .

Por exemplo, o valor do Via header pode dizer que a resposta foi recebida do Proxy, que pode ter solicitado por seus dados em seu próprio cache.

    
por 03.03.2011 / 16:52

Tags