【发布时间】:2017-05-13 16:08:42
【问题描述】:
我正在尝试为我们的网站开发 PWA。在生产和登台阶段,我们从一个领域为所有内容提供服务。然而,在本地机器上的开发中,我们使用 Django 服务器从一个端口提供 HTML,例如
http://localhost:8000
以及从另一个端口使用 Grunt 服务器的资产(包括 JS):
http://localhost:8001
问题是,Service Worker 的范围因此仅限于资产,这是没有用的,我想离线缓存 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")
但是,我认为这不是一个好的解决方案。此代码设置了对生产来说根本不需要的自定义路由规则。
我正在寻找的是使用代理的本地修复,或者其他可以让我像所有其他资产一样为服务人员服务的东西。
【问题讨论】:
标签: django proxy gruntjs localhost service-worker