Кэширование данных CURL json с сервера

Я пытаюсь выяснить, как я буду кэшировать данные, которые я вытаскиваю из файла jservservice на мою страницу, чтобы я не постоянно запрашивал эти данные и сбрасывал сервер.

В настоящее время я пытаю данные json так:

// jSON URL which should be requested
 $json_url = 'http://example.com/datastore.json?toolbar_id='.$persona['toolbar_id'].'';
 // jSON String for request
 $json_string = '[Json string? What is this]';
 // Initializing curl
 $ch = curl_init( $json_url );
 // Configuring curl options
 $options = array(
 CURLOPT_RETURNTRANSFER => true,
 CURLOPT_HTTPHEADER => array('Content-type: application/json') ,
 CURLOPT_POSTFIELDS => $json_string
 );
 // Setting curl options
 curl_setopt_array( $ch, $options );
 // Getting results
 $result = curl_exec($ch); // Getting jSON result string 
 $result = json_decode($result, true); 
 $result = $result[0];

Отсюда я могу вывести результаты ассоциативного массива по мере необходимости. Но если бы я обновил страницу, она бы вспомнила информацию о сервере. Любые решения?

1 ответ

Вы относитесь к нему как к любому другому файлу кэша:

  • Проверьте, существует ли файл кэша
  • Если это так, проверьте filemtime() на текущий time()
  • Если необходимо обновить, сделайте вызов cURL и запишите данные в файл кеша и продолжайте
  • Если он не нуждается в обновлении, просто верните данные из файла в свою переменную.

Это будет тот же JSON, независимо от того, вернет ли PHP его через cURL, или если PHP вернет его через fread() в файле кеша.

licensed under cc by-sa 3.0 with attribution.