How to mix expiration and validation strategies

Imagine that we want to keep the cache fresh for ten minutes and simultaneously keep an eye on any changes over user projects or finished tasks. It is obvious that tasks won't finish every ten minutes and it is far beyond reality to expect changes in the project status during that period.

So what we can do to make our caching strategy efficient is combine expiration and validation and apply them to the dashboard controller as follows:

// src/CoreBundle/Controller/DashboardController.php
<?php
//...
/**
 * @Cache(expires="600")
 */
class DashboardController extends Controller
{
    /**
     * @Cache(ETag="userProjects ~ finishedTasks")
     */
    public function indexAction() { //... }
}

Keep in mind that expiration has ...

Get Mastering Symfony now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.