使用html净化器(ezyang/htmlpurifier)或者特别是(stevebauman/purify)来实现laravel7(由前者提供支持),是否可以使用文件系统以外的替代缓存?文档暗示您可以使用fs或null(不推荐),但fs只是一个实现。其他实现是否可行(理想情况下是redis),以及如何配置它们?
3gtaxfhh1#
除了“serializer”之外,目前在html净化器库中没有其他官方缓存。也就是说,您可以编写自己的 HTMLPurifier_DefinitionCache .为了能够加载自定义缓存,您必须向注册实现 DefinitionCacheFactory . 据我所知,这应该是可行的:
HTMLPurifier_DefinitionCache
DefinitionCacheFactory
...$factory = HTMLPurifier_DefinitionCacheFactory::instance();$factory->register('YourImplName', 'YourFullClassName');$config->set('Cache.DefinitionImpl', 'YourImplName');...
...
$factory = HTMLPurifier_DefinitionCacheFactory::instance();
$factory->register('YourImplName', 'YourFullClassName');
$config->set('Cache.DefinitionImpl', 'YourImplName');
您可以看到需要在中实现哪些方法 DefinitionCache.php ,您需要扩展它( class YourFullClassName extends HTMLPurifier_DefinitionCache ). 本着不让大多数答案只能在链接中访问的精神,下面是您必须实现的类的抽象方法:
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);
/**
* 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
abstract public function set($def, $config);
* Replace an object in the cache
abstract public function replace($def, $config);
* Retrieves a definition object from the cache
abstract public function get($config);
* Removes a definition object to the cache
abstract public function remove($config);
* Clears all objects from cache
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.
abstract public function cleanup($config);
如果您发现需要重写该类中的其他一些方法,则可以重写这些方法,例如。 generateKey($config) 或者 isOld($key, $config) .我希望这有帮助!
generateKey($config)
isOld($key, $config)
1条答案
按热度按时间3gtaxfhh1#
除了“serializer”之外,目前在html净化器库中没有其他官方缓存。也就是说,您可以编写自己的
HTMLPurifier_DefinitionCache
.为了能够加载自定义缓存,您必须向注册实现
DefinitionCacheFactory
. 据我所知,这应该是可行的:您可以看到需要在中实现哪些方法
DefinitionCache.php
,您需要扩展它(class YourFullClassName extends HTMLPurifier_DefinitionCache
). 本着不让大多数答案只能在链接中访问的精神,下面是您必须实现的类的抽象方法:如果您发现需要重写该类中的其他一些方法,则可以重写这些方法,例如。
generateKey($config)
或者isOld($key, $config)
.我希望这有帮助!