novactive / ezaccelerator

Novactive eZ Accelerator 是一个针对性能优化的 eZ Platform 套件。

资助包维护!
plopix

安装: 0

依赖: 0

建议者: 0

安全性: 0

星级: 3

关注者: 13

分支: 2

开放问题: 0

类型:ezplatform-bundle

v1.0.0-beta1 2020-07-20 22:03 UTC

This package is auto-updated.

Last update: 2024-09-19 11:59:46 UTC


README

这个仓库是我们所说的“子树分割”:主仓库中一个目录的只读副本。它由 Composer 使用,以便开发者依赖于特定的包。

如果您想报告或贡献,请改在主仓库中打开问题: https://github.com/Novactive/Nova-eZPlatform-Bundles

文档可通过本仓库中的 .md 文件获取,但也在此打包: https://novactive.github.io/Nova-eZPlatform-Bundles/master/Accelerator/README.md.html

Downloads Latest version License

加速您的 Ibexa DXP (eZ Platform)

此套件有助于并旨在加速

  • 整体性能
  • 您的开发
  • 营销/内容创作团队的效率
  • 您的业务

eZ Accelerator 利用 Symfony Messenger 并为 eZ Platform 添加异步性,允许许多事情无需开销,并且正好相反,加速原生操作。

目前,eZ Accelerator 允许您

  • 异步地捕获和分发任何 事件。(但请注意,并非所有事件都可以异步处理)
  • 异步处理 HTTP 缓存清除
  • 异步处理搜索索引

额外功能!您可以将中间件注入其中!

这是如何工作的

首先,您需要了解 Symony Messenger 组件

异步 HTTP 缓存清除

eZ Accelerator 装饰了 eZ Platform 清除器以分发相应的消息。要启用异步性,您只需要知道消息 FQDN

  • 标签清除:Novactive\Bundle\eZAccelerator\Message\PurgeHttpCacheTags
  • 全部清除:Novactive\Bundle\eZAccelerator\Message\PurgeAllHttpCache

就是这样!请看下面的配置示例

异步搜索索引

eZ Accelerator 装饰了 eZ Platform 搜索处理器以分发相应的消息。要启用异步性,您只需要知道消息 FQDN

  • 索引内容:Novactive\Bundle\eZAccelerator\Message\Search\IndexContent
  • 索引位置:Novactive\Bundle\eZAccelerator\Message\Search\IndexLocation
  • 删除内容:Novactive\Bundle\eZAccelerator\Message\Search\UnindexContent
  • 删除位置:Novactive\Bundle\eZAccelerator\Message\Search\UnindexLocation
  • 全部清除:Novactive\Bundle\eZAccelerator\Message\Search\PurgeIndex

就是这样!请看下面的配置示例

异步事件处理

概念很简单,每当 eZ Platform 做任何事情时,都会触发一个事件。eZ Accelerator 给您通过总线处理事件的机会,这使您有机会通过您选择的传输同步或异步地处理该事件。

一切都是可选的,您仍然可以使用默认的事件调度器,或者您可以切换到总线方法。

配置示例

通过总线同步处理事件:eZ\Publish\API\Repository\Events\Bookmark\CreateBookmarkEvent

nova_ezaccelerator:
    system:
        default:
            # default_bus: a.default.bus.for.this.siteaccess.config
            event_to_message:
                eZ\Publish\API\Repository\Events\Bookmark\CreateBookmarkEvent:
                    message: Novactive\Bundle\eZAccelerator\Message\VoidEventMessage # should be your own
                    # stop_propagation: false # default
                    # bus: a.specific.bus.for.this.siteaccess.config.and.that.event

您还可以决定停止事件传播,如果这样做有意义的话。

传输配置

framework:
    messenger:
        buses:
            my.bus: # could be anything and you can have many
                middleware:
                    - Novactive\Bundle\eZAccelerator\Core\SiteAccessAwareMiddleware

        transports:
            ezaccelerator: 'doctrine://default?queue_name=nova_ezaccelerator' # you decide the name does not matter

        routing:
            Novactive\Bundle\eZAccelerator\Message\VoidEventMessage: ezaccelerator
            Novactive\Bundle\eZAccelerator\Message\HTTPCache\PurgeAllHttpCache: ezaccelerator
            Novactive\Bundle\eZAccelerator\Message\HTTPCache\PurgeHttpCacheTags: ezaccelerator
            Novactive\Bundle\eZAccelerator\Message\Search\IndexContent: ezaccelerator
            Novactive\Bundle\eZAccelerator\Message\Search\IndexLocation: ezaccelerator
            Novactive\Bundle\eZAccelerator\Message\Search\UnindexContent: ezaccelerator
            Novactive\Bundle\eZAccelerator\Message\Search\UnindexLocation: ezaccelerator
            Novactive\Bundle\eZAccelerator\Message\Search\PurgeIndex: ezaccelerator

使用此配置,您可以在需要时异步处理任何您想要处理的事情。

再次提醒,当所有 AfterEvent 都可以异步处理时,主要工作在大多数情况下必须同步。(例如:内容创建等。)

注意事项

在复杂的多站点访问情况下,消费者和 SiteAccesses

当运行消费者时,你可能会通过 1 个站点访问(可能是 default)来运行它们。

但是,你可能想了解原始的站点访问。这就是为什么 eZ Accelerator 注入了 SiteAccessAwareMiddleware,它给消息添加了原始站点访问的标签。

尽管如此,更重要的是,在你的处理器中,你需要根据正确的配置来处理。

让我们设想一个你拥有 2 个站点访问的情况

  • A:Varnish 服务器是 V.IP.A,数据库是 DB.A(默认)
  • B:Varnish 服务器是 V.IP.B,数据库是 DB.B

当你运行你的消费者时,它将使用 default 站点访问,这是为 Varnish 服务器 V.IP.A 设置的。来自站点访问 B 的消息被分发,它将由唯一运行的与站点访问 A 内存连接的消费者处理。因此,在这种情况下,V.IP.B 将永远不会被清除。

为了处理这些情况,你可以运行和设置不同的消费者和传输,并调整 eZ Accelerator / Messenger 配置。

  • 所有默认的 config bin/console messenger:consume
  • 站点访问 A bin/console messenger:consume --siteaccess=A

但你也可以指定 busreceiver

  • bin/console messenger:consume ezaccelerator --siteaccess=A --bus=something

特性

实现

安装说明

安装

变更日志

变更日志