29 lines
1.3 KiB
Plaintext
29 lines
1.3 KiB
Plaintext
|
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)
|