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 O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.