我需要为第一个分支配置服务工作者,而我完全迷路了。
我有一个非常标准的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。因此,重置实际上不会发生。
这里的问题是我什至不确定要更改哪些文件。我看着officual documentation for service worker in Polymer 2.0,但仍然有疑问。
例如:
如果我指定--sw-precache-config config-file.json
,则必须自己编写from scratch
的配置文件。有没有办法至少看到默认的“起点”,这样我才不会犯愚蠢的错误?
如何强制缓存特定的URL(请参阅routes/appInfo.js
),如何阻止其他URL的缓存(请参见/routes/passwordRecover/**
)以及如何检查为什么{{1} }没有被缓存?