В настоящее время в библиотеке HTML Purifier нет официальных кэшей, кроме "Serializer" . Тем не менее, вы можете написать свое собственное расширение HTMLPurifier_DefinitionCache
.
Чтобы иметь возможность загрузить свой пользовательский кеш, вам нужно будет зарегистрировать вашу реализацию с DefinitionCacheFactory
. Насколько я понимаю, это должно работать:
...
$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)
.
Надеюсь, это поможет!