是否可以使用redis或htmlpurifier的替代缓存?

1l5u6lss  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(460)

使用html净化器(ezyang/htmlpurifier)或者特别是(stevebauman/purify)来实现laravel7(由前者提供支持),是否可以使用文件系统以外的替代缓存?
文档暗示您可以使用fs或null(不推荐),但fs只是一个实现。其他实现是否可行(理想情况下是redis),以及如何配置它们?

3gtaxfhh

3gtaxfhh1#

除了“serializer”之外,目前在html净化器库中没有其他官方缓存。也就是说,您可以编写自己的 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) .
我希望这有帮助!

相关问题