目前有no official caches in the HTML Purifier library other than "Serializer"。也就是说,您可以编写自己的 HTMLPurifier_DefinitionCache 扩展名。
为了能够加载您的自定义缓存,您必须使用DefinitionCacheFactory register 您的实现。据我了解,这应该可行:
...
$factory = HTMLPurifier_DefinitionCacheFactory::instance();
$factory->register('YourImplName', 'YourFullClassName');
$config->set('Cache.DefinitionImpl', 'YourImplName');
...
您可以在 DefinitionCache.php 中查看需要实现哪些方法,您需要扩展 (class YourFullClassName extends HTMLPurifier_DefinitionCache)。本着不让大部分答案只能在链接中访问的精神,以下是您必须实现的类的抽象方法:
/**
* Adds a definition object to the cache
* @param HTMLPurifier_Definition $def
* @param HTMLPurifier_Config $config
*/
abstract public function add($def, $config);
/**
* Unconditionally saves a definition object to the cache
* @param HTMLPurifier_Definition $def
* @param HTMLPurifier_Config $config
*/
abstract public function set($def, $config);
/**
* Replace an object in the cache
* @param HTMLPurifier_Definition $def
* @param HTMLPurifier_Config $config
*/
abstract public function replace($def, $config);
/**
* Retrieves a definition object from the cache
* @param HTMLPurifier_Config $config
*/
abstract public function get($config);
/**
* Removes a definition object to the cache
* @param HTMLPurifier_Config $config
*/
abstract public function remove($config);
/**
* Clears all objects from cache
* @param HTMLPurifier_Config $config
*/
abstract public function flush($config);
/**
* Clears all expired (older version or revision) objects from cache
* @note Be careful implementing this method as flush. Flush must
* not interfere with other Definition types, and cleanup()
* should not be repeatedly called by userland code.
* @param HTMLPurifier_Config $config
*/
abstract public function cleanup($config);
如果您发现需要覆盖该类中的一些其他方法,您可以覆盖它们,例如generateKey($config) 或 isOld($key, $config)。
希望对你有帮助!