add cache (use CPHPCache)