是否可以在HTMLPurifier中使用redis或备用缓存?

问题描述 投票:0回答:1

使用Laravel 7的HTML Purifier(ezyang / htmlpurifier)或专门使用(stevebauman / purify)(由前者提供支持),是否可以使用替代文件系统的缓存?

docs表示您可以使用FS,或者为null(不建议使用),但是FS只是一个实现。其他实现方式是否可行(理想情况下是Redis),以及如何配置它们?

php caching redis htmlpurifier laravel-7
1个回答
1
投票

当前有no official caches in the HTML Purifier library other than "Serializer"。也就是说,您可以编写自己的HTMLPurifier_DefinitionCache扩展名。

为了能够加载自定义缓存,您必须使用register来实现DefinitionCacheFactory。据我了解,这应该工作:

...
$factory = HTMLPurifier_DefinitionCacheFactory::instance();
$factory->register('YourImplName', 'YourFullClassName');
$config->set('Cache.DefinitionImpl', 'YourImplName');
...

您可以看到需要在DefinitionCache.php中实现哪些方法,需要对其进行扩展(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)

我希望有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.