У меня есть очень стандартное приложение Polymer 2 со следующим polymer.json
файлом:
{
"entrypoint": "index.html",
"shell": "src/my-app.html",
"autoBasePath": true,
"fragments": [
"src/my-page-stats.html",
...
"src/my-page-404.html"
],
"sources": [
"images/**/*",
"src/**/*",
"libs/**/*"
],
"extraDependencies": [
"bower_components/webcomponentsjs/*.js",
"!bower_components/webcomponentsjs/gulpfile.js",
"manifest.json",
"src/lib/Utils.js"
],
"lint": {
"rules": ["polymer-2"]
},
"builds": [
{
"preset": "es5-bundled"
},
{
"preset": "es6-bundled"
},
{
"preset": "es6-unbundled"
}
],
"lint": {
"rules": ["polymer-2"],
"ignoreWarnings": ["invalid-polymer-expression"]
}
}
Каталог libs
содержит несколько символических ссылок:
total 12
Sortable.js -> ../bower_components/Sortable/Sortable.js
datalist-polyfill.min.js -> ../../node_modules/datalist-polyfill/datalist-polyfill.min.js
ejs.js -> ../../node_modules/ejs/ejs.js
ejs.min.js -> ../../node_modules/ejs/ejs.min.js
leaflet -> ../../node_modules/leaflet/dist/
moment-precise-range.js -> ../../node_modules/moment-precise-range-plugin/moment-precise-range.js
moment-timezone-with-data.js -> ../../node_modules/moment-timezone/builds/moment-timezone-with-data-2012-2022.js
moment.js -> ../../node_modules/moment/moment.js
ЯУ меня несколько проблем с работником службы, и я не могу понять, что делать:
Папка libs
не кэшируется.Если сеть не работает, браузер попытается загрузить все файлы в libs
.Я думал, что с тех пор под sources
в моем polymer.json
у меня есть "libs/**/*"
Интересно, проблема в том, что они являются ссылками?
Маршрут routes/appInfo.js
должен кэшируется, а сейчас нет.Это динамический файл Javascript, который устанавливает глобальную переменную, используемую во всем приложении.Он не кэшируется, потому что нигде не упоминается как «специальный» файл, но ... это так.
Маршрут /routes/passwordRecover/**
должен игнорироваться работником службы.В настоящий момент проблема заключается в том, что если пользователь запрашивает токен восстановления пароля, и он уже загрузил сайт ранее, этот запрос обрабатывается работником службы, который перенаправляет его прямо в файл index.html по умолчанию.Таким образом, сброс никогда не происходит.
Проблема здесь в том, что я даже не уверен, какие файлы изменить.Я посмотрел официальную документацию для сервисного работника в Polymer 2.0 , но у меня все еще есть вопросы.
Например:
Если я укажу --sw-precache-config config-file.json
, Я должен написать файл конфигурации самостоятельно from scratch
.Есть ли способ, по крайней мере, увидеть «начальную точку» по умолчанию, чтобы я не делал глупых ошибок?
Как заставить кэшировать определенные URL-адреса (см. routes/appInfo.js
), как я могу предотвратить кэширование других (см. /routes/passwordRecover/**
) и как проверить, почему libs/**
не кэшируется?