blob: 7f720f790267ca680b29c897a96d2af46579987d [file] [log] [blame]
eZ component: Cache, Design, 1.3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:Author: $Author$
:Revision: $Revision$
:Date: $Date$
.. contents::
=====
Scope
=====
The scope of this document is to design the features to be implemented for the
Cache component version 1.3. This version will incorporate the following
features and fixes, which will be described in detail in this document:
- #11049 Using other storage engines beyond file-based storage.
============================================================
#11049 Using other storage engines beyond file-based storage
============================================================
Since file-storage is quite slow for web application needs, implementing
storage in memory is a good idea. Memory is limited so it is up to the
developer to use it with care.
Examples of memory-based storage engines:
`APC`_
APC is a PECL extension that is rumored to be integrated into future
versions of PHP.
`Memcache`_
Memcache is similar to APC but it is extremely useful for a load balanced
enterprise environment. This relies on memcached which is the most reliable
and trusted method of sharing large volumes of cacheable data between many
different servers.
Design
======
For each memory-based storage engine (`APC`_, `Memcache`_) a storage and a
backend class will be implemented.
Storage
-------
ezcCacheStorageMemory
Abstract class which is a base for all memory-based storage classes. It uses
a registry to keep the stored data and a search registry to allow fast
fetching of the stored data.
ezcCacheStorageApcPlain
This stores cache directly in the `APC`_ cache. It keeps a registry of all
known caches to aid searching.
ezcCacheStorageMemcachePlain
This stores the cache directly in `Memcache`_. This is extremely fast. It
also keeps a registry of all known caches to aid searching.
ezcCacheStorageFileApcArray
This is an extension of the ezcCacheStorageFileArray except it keeps cache
in `APC`_ and in the file system. The filesystem is seen as the authority
but the cache is read from `APC`_ as much as possible. This reduces reads
to the filesystem and speeds up the cache dramatically.
Backend
-------
ezcCacheMemoryBackend
Abstract class which is a base for all memory backends. Contains the
abstract methods store, restore and delete which need to be implemented by
all subclasses.
ezcCacheApcBackend
Implements the store, restore and delete methods from ezcCacheMemoryBackend
with calls to `APC`_.
ezcCacheMemcacheBackend
Implements the store, restore and delete methods from ezcCacheMemoryBackend
with calls to `Memcache`_.
.. _APC: http://pecl.php.net/package/APC
.. _Memcache: http://pecl.php.net/package/Memcache
..
Local Variables:
mode: rst
fill-column: 79
End:
vim: et syn=rst tw=79