Проблемы с кэшированием и маршрутизацией для сервисных работников Polymer - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть очень стандартное приложение 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/** не кэшируется?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...