我很熟悉http状态码,但最近我在我的chrome调试器中看到了一条奇怪的线。而不是普通的Status Code:200 OK
我看到以下内容:Status Code:200 OK (from ServiceWorker)
。”状态代码:200 OK(来自ServiceWorker)?
我的猜测是,这只是告诉我,ServiceWorker来访问此文件在某种程度上负责,但是这仅仅是随机的猜测。任何人都可以权威地(没有猜测,并链接到受尊重的资源)告诉我这是什么意思,什么影响?
我很熟悉http状态码,但最近我在我的chrome调试器中看到了一条奇怪的线。而不是普通的Status Code:200 OK
我看到以下内容:Status Code:200 OK (from ServiceWorker)
。”状态代码:200 OK(来自ServiceWorker)?
我的猜测是,这只是告诉我,ServiceWorker来访问此文件在某种程度上负责,但是这仅仅是随机的猜测。任何人都可以权威地(没有猜测,并链接到受尊重的资源)告诉我这是什么意思,什么影响?
这是一个常见的混淆来源,所以我想进一步详细一点。
我有一个完整的工作演示this Gist,您可以查看live version of it感谢RawGit。
这里的服务人员联代码的相关部分,用于说明目的:
self.addEventListener('fetch', event => {
if (event.request.url.endsWith('one.js')) {
// Requests for one.js will result in the SW firing off a fetch() request,
// which will be reflected in the DevTools Network panel.
event.respondWith(fetch(event.request));
} else if (event.request.url.endsWith('two.js')) {
// Requests for two.js will result in the SW constructing a new Response object,
// so there won't be an additional network request in the DevTools Network panel.
event.respondWith(new Response('// no-op'));
}
// Requests for anything else won't trigger event.respondWith(), so there won't be
// any SW interaction reflected in the DevTools Network panel.
});
这里就是网络面板的过滤版本看起来像在Chrome 48时服务人员是在控制页面,并请求为one.js
,two.js
制成,并且three.js
:
我们的服务人员的fetch
手柄R将做三件事情之一:
one.js
的请求时,它会激发关闭了同样的URL fetch()
请求,然后使用该响应呼叫event.respondWith()
。第一one.js
条目的截图中,一个以“(来自ServiceWorker)”中的“大小”一栏,有凭借的事实,即我们俗称的event.respondWith()
处理fetch
里面。第二one.js
条目屏幕截图,所述一个与小齿轮图标旁边和“(从高速缓存)”中的“尺寸”列,表示fetch()
请求被服务人员内部取得同时响应该事件。由于实际的one.js
文件在我使用此屏幕截图时已经在HTTP缓存中,因此您会看到“(from cache)”,但如果HTTP缓存中没有该响应,您会看到一个实际的网络请求响应大小。two.js
的请求时,它会处理的“凭空”建设一个新的Response
对象的请求。 (是的,你可以这样做!)在这种情况下,我们呼叫event.respondWith()
,因此在“大小”列中有一个条目two.js
和“(来自ServiceWorker)”。但与one.js
不同,我们没有使用fetch()
来填充响应,因此two.js
网络面板中没有其他条目。three.js
的要求,我们的服务人员的fetch
事件处理程序实际上不会调用event.respondWith()
。从页面的角度来看,也从Network面板的角度看,服务工作者没有参与该请求,这就是为什么在“Size”中只有“(来自缓存)”而不是“(来自ServiceWorker)” “专栏。服务工作者是通过在后台浏览器中运行的脚本。因此状态代码:200 OK(来自ServiceWorker)表示GET或HEAD请求的“OK”成功代码,此状态来自ServiceWorker。
你可以阅读这个链接,了解更多关于此。 http://www.html5rocks.com/en/tutorials/service-worker/introduction/
它会产生什么影响? –
这是正常现象。为了避免每个请求200
引起的混淆。它显示请求是SUCCESS
但service-worker
已回应资源/请求而不是network/server
带有齿轮图标的所有条目在启动器列中的值均为“其他”。也许更具描述性的价值会更有意义? –
https://code.google.com/p/chromium/issues/detail?id=555070 –