我正在尝试为我们的网站开发PWA。在制作和舞台演出中,我们从一个领域提供服务。但是,在本地机器上进行开发时,我们使用Django服务器从一个端口提供HTML,例如
http://localhost:8000
从其他端口使用Grunt服务器的资产(包括JS):
http://localhost:8001
问题在于,服务工作者的范围仅限于资产,这是无用的,我想在8000端口源上离线缓存页面。
我有点能够通过将服务工作者作为Django中的自定义视图来解决这个问题:
# urls.py
url(r'^(?P<scope>.*)sw\.js', service_worker_handler)
# views.py
def service_worker_handler(request, scope='/'):
return HttpResponse(render_to_string('assets/sw.js', {
'scope': scope,
}), content_type="application/x-javascript")
但是,我不认为这是一个很好的解决方案。此代码设置了根本不需要生产的自定义路由规则。
我正在寻找的是使用代理的本地修复,或其他让我像所有其他资产一样为服务工作者提供服务的东西。
答案 0 :(得分:0)
我相信这些资源对您有所帮助:https://googlechrome.github.io/samples/service-worker/foreign-fetch/
基本上,您在端口8001上托管Service worker,服务器处理它,如示例所示。 然后你从那里拿到它。
此处详细介绍了外部提取:https://developers.google.com/web/updates/2016/09/foreign-fetch