PHP Colleghi:Laravel Cache :: Best practice
Questa domanda si riferisce alle migliori pratiche per l'utilizzo di Laravel Cache.
L'obiettivo principale è ridurre il numero di accessi al database per tutti i soliti motivi relativi alle prestazioni dello . L'applicazione è un sito di notizie ad alta intensità di lettura con forse una dozzina di controller al massimo, principalmente di tipo risorsa.
Esistono buone pratiche documentate per la progettazione dell'applicazione? Mi sembra ovvio, , che poiché Cache :: è un'istruzione a riga singola, è facile rilasciarlo nei controller - restituire i dati memorizzati nella cache o chiamare il modello e memorizzare i risultati nella cache. E invalida la cache (magari con una ricarica avida) quando le richieste aggiornano il modello. Ma è una buona pratica?
Ecco un primo sguardo a fare questo nel controller
/**
* Retrieve listing of the gallery resource.
*
* @uses GET /gallery to return all image_collections.
*
* @param int $id The gallery id
*
* @return Response - Contains a HTTP code and a list of articles.
*/
public function index()
{
$response_data = array();
$response_code = 200;
// TRY TO RETURN A CACHED RESPONSE
$cache_key = "gallery_index";
$response_data = Cache::get($cache_key, null);
// IF NO CACHED RESPONSE, QUERY THE DATABASE
if (!$response_data) {
try {
$response_data['items'] = $this->gallery->all();
Cache::put($cache_key, $response_data, Config::get('app.gallery_cache_minutes'));
} catch (PDOException $ex) {
$response_code = 500;
$response_data['error'] = ErrorReporter::raiseError($ex->getCode());
}
}
return Response::json($response_data, $response_code);
}
Ho sentito il suggerimento che si potrebbe usare i filtri laravel itinerario di memorizzare nella cache le risposte, ma non posso abbastanza ottenere la mia testa intorno l'idea.
Pensieri? Riferimenti? Esempi?
Grazie a tutti, Ray
è difficile, tutto dipende da quello che stai caching. Se stai presentando un valore approssimato potresti non interessarti se i dati sottostanti sono un po 'obsoleti, viceversa se stai memorizzando nella cache qualcosa come ALC potrebbe sempre essere corretto (e poi svuotato quando l'archivio dati sottostante viene aggiornato) . – Matthew
Dovresti disaccoppiare la logica nel controller, ad esempio potresti passare la cache del tipo di suggerimento al costruttore del controller, inoltre ti suggerisco di creare repository per la memorizzazione nella cache, in modo da sfruttare le capacità di caching di laravel. – Darick