我正在构建一个PWA应用程序,我已经为一些apiendpoint使用了workbox registerroute,以及一个显式的服务工作者获取事件侦听器。在调试一些缓存问题时,我注意到这两个问题似乎相互干扰。具体来说,有时不会触发fetch处理程序—这会给调试带来麻烦—我假设这是由于我通过workbox设置的registerroute缓存策略造成的。
我的问题是,我可以只选择其中一个,而不是同时使用fetch处理程序和registerroute吗?在我的例子中,我需要FetchHandler来处理一些与POST请求相关的高级缓存。因此,我认为如果我只能选择一个,我将不得不坚持使用fetch处理程序。
首先,这里有一些关于active service worker中有多个fetch
事件处理程序时会发生什么的背景信息。
考虑到这些背景信息,有几种方法可以实现您所描述的内容。
只要您先注册自己的fetch
处理程序,然后再调用Workbox的registerRoute()
,就可以保证在响应传入的fetch
事件时有“第一枪”。
需要记住的是,您自己的fetch
处理程序需要同步决定是否html" target="_blank">调用事件。respondWith()
,以及何时调用事件。respondWith()
,则Workbox的路由将不用于响应给定的请求。
因此,您可以执行以下操作:
self.addEventListener('fetch', (event) => {
// Alternatively, check event.request.headers,
// or some other synchronous criteria.
if (event.request.url.endsWith('.json')) {
event.respondWith(customResponseLogic(event));
}
});
// Then, include any Workbox-specific routes you want.
registerRoute(
({request}) => request.destination === 'image',
new CacheFirst()
);
// The default handler will only apply if your own
// fetch handler didn't respond.
registerDefaultHandler(new StaleWhileRevalidate());
这类似于1a,但主要的事情是确保您没有一个“包罗万象”的路由来匹配所有的请求,并且您不使用寄存器DefaultHandler()
。
假设你的Workbox路由只匹配一组特定的定义良好的标准,而不匹配你想要在你自己的处理程序中响应的任何请求,那么你如何排序就不重要了:
// Because this will only match image requests, it doesn't
// matter if it's listed first.
registerRoute(
({request}) => request.destination === 'image',
new CacheFirst()
);
self.addEventListener('fetch', (event) => {
// Alternatively, check event.request.headers,
// or some other synchronous criteria.
if (event.request.url.endsWith('.json')) {
event.respondWith(customResponseLogic(event));
}
});
(在“引擎盖下”发生的事情是,如果没有一个路由
的同步匹配处理程序
返回真实值,Workbox的路由
将不会调用事件。respondWith()
)
使用Workbox处理所有路由应该是可行的,并在handlerCallback
(更简单)或Strategy
基类的自定义子类中运行自定义响应生成代码(更可重用,但简单使用会过头案例)。
需要记住的一点是,如果您处理POST
请求,您需要明确地告诉registerRoute()
响应它们,方法是将'POST'
作为(可选)第三个参数传入。
下面是一个示例,说明了如何执行此操作,假设您的自定义逻辑是在customResponseLogic()
函数中定义的:
registerRoute(
({request}) => request.destination === 'image',
new CacheFirst()
);
registerRoute(
// Swap this out for whatever criteria you need.
({url}) => url.pathname.endsWith('.json'),
// As before, this assumes that customResponseLogic()
// takes a FetchEvent and returns a Promise for a Response.
({event}) => customResponseLogic(event),
// Make sure you include 'POST' here!
'POST'
);
目前我们正在使用Axon 2。我们想把Axon 2升级到4。我们使用Axon 2订阅带有重放选项的事件处理器。在Axon 4中,一个显著的区别是跟踪事件处理器。看来,跟踪处理器是重播的必备。有可能拥有订阅和跟踪事件处理器吗?有没有可能把跟踪处理器只用于重放,剩下的就不管了?还是必须改变整个结构?
我们有一个使用Disruptor框架的系统,它有五个注册阶段来实现EvenetHandler。 阶段按顺序工作,因此请求只能在第一阶段完成时移动到第二阶段,该移动由Disruptor内部维护。 我们对第三阶段有问题,这是瓶颈,需要大量时间,因为它进行不同的HTTP调用并将响应存储在请求对象中。 因此,我们希望在第三阶段花了一段时间之后,将请求(无论有什么响应)提前到第四和第五阶段。 如何超时任何特
本文向大家介绍HTML5 / JS存储事件处理程序,包括了HTML5 / JS存储事件处理程序的使用技巧和注意事项,需要的朋友参考一下 仅当存储事件由另一个窗口触发时,才会触发存储事件处理程序。您可以尝试运行以下代码:
我试图了解和之间的区别。如果需要创建更新资源的路由,例如,是否应该同时实现和? 如果可以使用部分更新资源,为什么要使用?
问题内容: https://cloud.google.com/appengine/docs/go/users/ 我在这里看到他们没有指定使用任何路由器…:https : //cloud.google.com/appengine/docs/go/config/appconfig 在与Golang一起使用的Google Cloud中,它表示要在中指定每个处理程序。这是否意味着我们不应该使用第三方路由器
必需的URL:https://learn . Microsoft . com/en-us/azure/active-directory/develop/application-consent-experience https://login.microsoftonline.com/common/adminconsent?客户端id = {应用程序Id} 请帮帮忙