Ci sono due metodi che potrebbero essere usati nella cache qui (supponendo di usare solo il file system, come hai detto che Memcache non è disponibile):
Metodo 1: la vita della cache è nota
Se sai per quanto tempo dovrebbe durare il file della cache, allora potresti probabilmente racchiudere il recupero delle informazioni della cache in una chiamata a filemtime prima del recupero. Esempio:
$filepath = './cache/' . md5($params); // path to cache file
$cachelength = 3600; // 1 hour
if (is_file($filepath) && time() - filemtime($filepath) < $cachelength) {
$response = unserialize(file_get_contents($filepath));
} else {
$response = fetch_data();
file_put_content($filepath, serialize($response));
}
Metodo 2: Cache life not known
Se non sai per quanto tempo dovrebbe durare la cache, allora l'altra alternativa sarebbe avere un cronjob (o un'attività pianificata su Windows) che rimuova tutti i file della cache ogni pochi minuti, in modo che la cache sia continuamente essere pulito. Esempio:
*/5 * * * * /bin/rm -f /path/to/cache/*
Oltre alla memorizzazione nella cache, esiste un altro modo per velocizzare le richieste iniziali (supponendo che tutte le richieste siano rese asincrone):
Suggerimento bonus: "Accelera" le richieste iniziali usando curl_multiexec ()
Qualcosa che potresti voler usare è la funzione curl_multiexec * per elaborare tutte le richieste iniziali in parallelo. Ho un wrapper per questa funzionalità su github