Technical choices for Cache_Lite...
-----------------------------------
To begin, the main goals of Cache_Lite :
- performances
- safe use (even on very high traffic or with NFS (file locking doesn't work
with NFS))
- flexibility (can be used by the end user or as a part of a larger script)
For speed reasons, it has been decided to focus on the file container (the
faster one). So, cache is only stored in files. The class is optimized for that.
If you want to use a different cache container, have a look to PEAR/Cache.
For speed reasons too, the class 'Cache_Lite' has do be independant (so no
'require_once' at all in 'Cache_Lite.php'). But, a conditional include_once
is allowed. For example, when an error is detected, the class include dynamicaly
the PEAR base class 'PEAR.php' to be able to use PEAR::raiseError(). But, in
most cases, PEAR.php isn't included.
For the second goal (safe use), there is three (optional) mecanisms :
- File Locking : seems to work fine (but not with distributed file system
like NFS...)
- WriteControl : the cache is read and compared just after being stored
(efficient but not perfect)
- ReadControl : a control key (crc32(), md5() ou strlen()) is embeded is the
cache file and compared just after reading (the most efficient
but the slowest)
Copyright 2K16 - 2K18 Indonesian Hacker Rulez