Назад | Перейти на главную страницу

Как определить, является ли это кешем ISP / сервера?

Прежде чем мы начнем: я новичок.

Я пытаюсь получить доступ к 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 Заголовок может сообщить вам, что был получен ответ от прокси, который мог запросить данные в его собственном кеше.