为什么我们在 AEM 中使用重新获取调度程序刷新代理?

Why do we use refetching dispatcher flush agents in AEM?

我们什么时候使用重新获取调度程序刷新代理,使用它们的目的是什么?

我在 AEM 文档中找不到太多关于此的信息。

使用刷新刷新代理的原因是为了确保您的页面在复制后立即缓存在调度程序上。

使用普通的刷新代理,您可以刷新缓存,并且刷新的内容只会在首次请求后再次从发布者处检索。这会产生潜在的风险,因为如果您的网站突然出现高流量高峰,许多对先前刷新页面的请求可能会在很短的时间内到达发布者。例如,您在晚上流量较低时刷新大量页面,而在早上,您的用户开始访问该站点以查看新内容。在这种情况下,Dispatcher 可能会收到对同一页面的多个并发请求并将它们转发给 Publisher,因此您会在每个页面上查看多个请求。

引用 Adobe documentation:

Deleting cached files ins this manner is appropraite for web sites that are not likely to receive simultaneous requests for the same page.

使用重新获取刷新代理允许您预填充缓存,因为它会指示 Dispatcher 在刷新发生后立即从 Publish 实例检索页面。这样 Dispatcher 就不太可能调用 Publisher 来处理对同一内容的多个并发请求,并且您可以控制何时重新获取。以后发生的任何潜在流量增加只会导致从 Dispatcher 缓存提供页面,而不会影响 Publish 实例。

重新获取代理使您可以更好地控制 Publish 实例何时呈现页面。您可以控制复制事件,并且知道何时必须由 Publish 实例呈现页面。例如,您可以在晚上流量较低时执行刷新刷新,并确保在实际用户开始调用您的站点之前对每个页面进行过夜缓存,从而增加服务器上的负载。

再次引用文档:

Delete and immediately re-cache files when web sites are likely to receive simultaneous client requests for the same page. Immediate recaching ensures that Dispatcher retrieves and caches the page only once, instead of once for each of the simultaneous client requests.

一句警告。在尝试复制大部分内容或您的自定义 AEM 代码速度不是很快时,您必须非常小心地使用重新获取代理。如果您同时激活很多页面,您可能最终会对自己执行 DDOS 攻击,调度程序会用大量请求杀死发布者。根据您的 AEM 代码的性能,效果会有所不同。同时立即重新获取刷新所有内容是一个非常糟糕的主意,尤其是当您的网站需要大量资源来呈现页面时。