Help with Phalcon\Cache and Phalcon\Cache\Backend\Apc

New to Phalcon and need some help in using Phalcon\Cache and Phalcon\Cache\Backend\Apc.

1) Phalcon\Cache\Backend\Apc - What does the "prefix" option actually do? Even though I create a cache with prefix set to 'cache', I am still able to just use the key without the prefix to get data from cache.

2) What is the "tracking" option for and does it apply to Backend\Apc? This option is not documented anywhere, but was in the code example for Memcached on GitHub incubator.

3) Where exactly should the cache code be if global, static data needs to be cached? Should it be under dependency injector in services.php? I want to read a static catalog (e.g restaurant menu) once a day from the database and have it cached for all users to access. Currently, I have something like this:

1) Phalcon\Cache\Backend\Apc - What does the "prefix" option actually do? Even though I create a cache with prefix set to 'cache', I am still able to just use the key without the prefix to get data from cache.

It automatically prefixes all the keys used, this to prevent collisions to existing values in APC

2) What is the "tracking" option for and does it apply to Backend\Apc? This option is not documented anywhere, but was in the code example for Memcached on GitHub incubator.

It does not apply to APC

3) Where exactly should the cache code be if global, static data needs to be cached? Should it be under dependency injector in services.php? I want to read a static catalog (e.g restaurant menu) once a day from the database and have it cached for all users to access. Currently, I have something like this:

The easiest way is implement a modelsCache service and use it as follows:

Thanks, this is very helpful! Just to confirm, will passing the cache parameter in the find() method automatically return results from the cache rather than DB if the cache is still alive? Or should I be checking if the key "my-cache" exists in modelsCache?