PHP Colleagues:
This question relates to best practices for using Laravel Cache.
The central objective is to reduce the number of accesses to the database for all the usual performance-related reasons. The application is a read-intensive news site with perhaps a dozen controllers at most, mostly resource-type.
Are there any documented best practices for the application design? It seems obvious to me that since Cache:: is a one-line statement, it's easy to drop this into the controllers -- either return the cached data or call the model and cache the results. And invalidate the cache (maybe with an eager reload) when requests update the model. But is that a good practice?
Here's a first look at doing this in the 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);
}
I've heard the suggestion that you could use Laravel Route Filters to cache the responses, but I can't quite get my head around the idea.
Thoughts? References? Examples?
Thanks to all, Ray
See Question&Answers more detail:os