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

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

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

3gtaxfhh

3gtaxfhh1#

除了“serializer”之外,目前在html净化器库中没有其他官方缓存。也就是说,您可以编写自己的 HTMLPurifier_DefinitionCache .
为了能够加载自定义缓存,您必须向注册实现 DefinitionCacheFactory . 据我所知,这应该是可行的:

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

您可以看到需要在中实现哪些方法 DefinitionCache.php ,您需要扩展它( class YourFullClassName extends HTMLPurifier_DefinitionCache ). 本着不让大多数答案只能在链接中访问的精神,下面是您必须实现的类的抽象方法:

  1. /**
  2. * Adds a definition object to the cache
  3. * @param HTMLPurifier_Definition $def
  4. * @param HTMLPurifier_Config $config
  5. */
  6. abstract public function add($def, $config);
  7. /**
  8. * Unconditionally saves a definition object to the cache
  9. * @param HTMLPurifier_Definition $def
  10. * @param HTMLPurifier_Config $config
  11. */
  12. abstract public function set($def, $config);
  13. /**
  14. * Replace an object in the cache
  15. * @param HTMLPurifier_Definition $def
  16. * @param HTMLPurifier_Config $config
  17. */
  18. abstract public function replace($def, $config);
  19. /**
  20. * Retrieves a definition object from the cache
  21. * @param HTMLPurifier_Config $config
  22. */
  23. abstract public function get($config);
  24. /**
  25. * Removes a definition object to the cache
  26. * @param HTMLPurifier_Config $config
  27. */
  28. abstract public function remove($config);
  29. /**
  30. * Clears all objects from cache
  31. * @param HTMLPurifier_Config $config
  32. */
  33. abstract public function flush($config);
  34. /**
  35. * Clears all expired (older version or revision) objects from cache
  36. * @note Be careful implementing this method as flush. Flush must
  37. * not interfere with other Definition types, and cleanup()
  38. * should not be repeatedly called by userland code.
  39. * @param HTMLPurifier_Config $config
  40. */
  41. abstract public function cleanup($config);

如果您发现需要重写该类中的其他一些方法,则可以重写这些方法,例如。 generateKey($config) 或者 isOld($key, $config) .
我希望这有帮助!

展开查看全部

相关问题