Прежде чем мы начнем: я новичок.
Я пытаюсь получить доступ к YQL, чтобы получить некоторую информацию. Захватить его с помощью PHP file_get_contents достаточно просто, но похоже, что либо интернет-провайдер клиента, либо сервер кэшируют ответ. Чтобы проиллюстрировать проблему, попробуйте загрузить:
-
Обновите эту страницу пару раз - обратите внимание, что строка created не меняется - она должна откладываться на пару секунд при каждом обновлении, как в этом тестовом примере:
-
Теперь мой вопрос: это какой-то трюк системного администратора для кеширования данных или что-то, что делает интернет-провайдер? Могу я обойти это? Я должен получить доступ к YQL через URL-адрес, потому что мне нужно иметь возможность его анализировать.
(Доступ к системному администратору затруднен)
Заранее спасибо.
РЕДАКТИРОВАТЬ
Узнал, как обойти кеш. Вы можете либо рандомизировать строку и использовать трюк, упомянутый ниже @Coops, либо использовать код здесь. В большинстве случаев вы можете пропустить кеш, отправив заголовок Pragma: no-cache, создайте контекст и используйте его:
// 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');
Я до сих пор не могу понять, настроен ли кеш системным администратором или провайдером.
Вы можете проверить некоторые конкретные заголовки из ответов: Age
, Expires
, ETag
, Via
. Значения этих заголовков могут помочь вам определить, что вам нужно. Подробности и описания заголовков см. В разделе Responses
в Список заголовков HTTP.
Например, значение Via
Заголовок может сообщить вам, что был получен ответ от прокси, который мог запросить данные в его собственном кеше.