Итак, я создаю прогрессивное веб-приложение Django с автономной поддержкой с использованием рабочих сервисов.Django и сервисные работники - обслуживают «sw.js» у корневого URL-адреса приложения
Согласно google's documentation, файл sw.js должен быть в корне URL-приложения:
Вы должны сделать это, потому что сфера применения работника службы (набор URLs, что ServiceWorker будет загружаться для) определяется в каталоге , где он находится.
В настоящий момент я обслуживаю все статические активы из папки http://example.com/static/. Но мне нужно обслуживать этот конкретный файл по адресу: http://example.com/sw.js.
Любая идея, как я могу это достичь? Я мог бы сделать определенное правило nginx для этого перенаправления, но я не знаю, является ли это самым чистым способом сделать это. Возможно, этот параметр должен находиться в urls.py?
Примечание: Я видел this question, который предлагает использовать метод static() из django.conf.urls.static
. Но django's docs говорят, что статический метод предназначен только для разработки, поэтому мне нехорошо.
Примечание (2): Я предполагаю, что смогу изменить настройку STATIC_URL
, но я доволен, что мои файлы обслуживаются из/статического каталога. Я хочу, чтобы этот файл был только в корневом каталоге url.
Вы можете удалить cache_control, так как работники службы по умолчанию не может быть кэшируются в течение более 24 часов, и, как правило, вы хотите, чтобы служить новым как только он будет доступен. – Tiagojdferreira
, но я хочу, чтобы лак на интерфейсе кэшировал эту страницу. Тем более, что он будет запрашиваться каждым клиентом каждые 24 часа. Затем вы просто кешируете грудь url, т. Е. 'Var sw = navigator.serviceWorker.register ('{% url' service-worker.js '%}? V = 13');' – dalore