# Mettre en cache des résultats lents sur disque avec FILECACHE

> Utilisez FILECACHE() pour calculer un résultat une fois et le réutiliser depuis un fichier pendant une période, même après un redémarrage.

Framework: total5
Product: Total.js 5 (total5@0.0.19)
Language: fr
Content-SHA256: 0c588ab527cfaf9c97e2f6b6d2cce56aba926a35ce93e931e1cc73d9b8cbfe31
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: total5-installed@total5@0.0.19
Review: not-recorded

`FILECACHE(id, expiration, callback, maker)` cherche un fichier en cache pour `id`. S'il existe et est plus récent que `expiration` (un texte comme `'1 minute'`), le callback reçoit son contenu ; sinon il appelle `maker(done)` pour calculer la valeur, la stocke et la renvoie. Le résultat est sérialisé en JSON. Contrairement à `CACHE`, il survit aux redémarrages et convient aux gros résultats.

```js controllers/report.js
exports.install = function() {
	ROUTE('GET /report/', report);
};

var computed = 0;

function report($) {

	FILECACHE('monthly-report', '1 minute', function(err, response) {
		$.json({ report: response, computed: computed });
	}, function(done) {
		// The expensive work goes here
		computed++;
		done(null, { total: 42, generated: computed });
	});
}
```
