- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我运行网站 https://www.igluonline.com运行 Hugo,我最近在 Google 的 sw-precache 之后安装了一个 service worker .
这是配置文件:
module.exports = {
staticFileGlobs: [
'dist/css/**.css',
'dist/**/*.html',
'dist/images/**.*',
'dist/js/**.js'
],
skipWaiting: true,
stripPrefix: 'dist',
runtimeCaching: [{
urlPattern: /\/*/,
handler: 'networkFirst'
}]
};
注意事项:
虽然有时自动生成的代码会遇到一些错误,但 Service Worker 可以正常工作并在 Web 和移动设备上提供离线体验。
此外,它还将 cache-control
设置为 max-age=0
,当我推送新代码时,它会进行更新。
问题:
我将 runtimeCaching 处理程序
设置为 networkFirst
并根据 Google 的 sw-toolbox
API (当使用 runtimeCaching
时出现在 sw-precache
中)它应该最好从 http 调用中获取页面,如果没有连接它应该回退到缓存。
但是当我刷新我的代码并打开一个新窗口进行测试时(请注意,我确实在更新之前关闭了运行该网站的所有选项卡和窗口),它会显示缓存页面。它会自然地下载新的 service worker 并在第二次重新加载时更新页面,但我不希望访问者每次都刷新我的主页以获取新内容。
我尝试将 runtimeCaching
代码更改为以下代码,希望至少让我的主页直接从网络加载,但我没有运气:
runtimeCaching: [{
urlPattern: /\//,
handler: 'networkOnly'
},{
urlPattern: /\/*/,
handler: 'networkFirst'
}]
现在我不确定所需的 PWA 体验是否像那样——这意味着用户必须重新加载两次或至少访问两个页面才能看到刷新的代码——或者我是否犯了一些错误。我真的很感激考虑。
最佳答案
生成服务 worker 时,获取所需策略的最简单方法是使用 sw-precache
与 sw-toolbox
.
当使用 sw-precache
生成新的 service-worker 时, 你还可以获得 sw-toolbox
通过传递正确的配置选项在生成的文件末尾添加代码。
The
sw-precache
module has the ability to include thesw-toolbox
code and configuration alongside its own configuration. Using theruntimeCaching
configuration option insw-precache
(see below) is a shortcut that accomplishes what you could do manually by importingsw-toolbox
in your service worker and writing your own routing rules.
这是 sw-precache
上显示的 runtimeCaching
选项的示例 documentation :
runtimeCaching: [{
urlPattern: /^https:\/\/example\.com\/api/,
handler: 'networkFirst'
}, {
urlPattern: /\/articles\//,
handler: 'fastest',
options: {
cache: {
maxEntries: 10,
name: 'articles-cache'
}
}
}]
您可以将此选项与您选择的配置一起使用。
例如,您可以使用 documentation 中所述的配置文件:
There's support for passing complex configurations using --config . Any of the options from the file can be overridden via a command-line flag. We strongly recommend passing it an external JavaScript file defining config via module.exports. For example, assume there's a path/to/sw-precache-config.js file that contains:
module.exports = {
staticFileGlobs: [
'app/css/**.css',
'app/**.html',
'app/images/**.*',
'app/js/**.js'
],
stripPrefix: 'app/',
runtimeCaching: [{
urlPattern: /this\\.is\\.a\\.regex/,
handler: 'networkFirst'
}]
};That file could be passed to the command-line interface, while also setting the verbose option, via
$ sw-precache --config=path/to/sw-precache-config.js --verbose
This provides the most flexibility, such as providing a regular expression for the runtimeCaching.urlPattern option.
或者您可以使用 JSON 文件:
We also support passing in a JSON file for --config, though this provides less flexibility:
{
"staticFileGlobs": [
"app/css/**.css",
"app/**.html",
"app/images/**.*",
"app/js/**.js"
],
"stripPrefix": "app/",
"runtimeCaching": [{
"urlPattern": "/express/style/path/(.*)",
"handler": "networkFirst"
}]
}
此示例使用 JS 文件作为配置选项:
$ sw-precache --config=path/to/sw-precache-config.js --verbose
执行命令并使用此配置生成服务 worker 后,您可以比仅使用 sw-precache
更容易地处理预缓存和策略。 .
您可以直接在文件中配置您的策略,也可以在您的服务 worker 代码底部手动添加它们。
下面是生成代码的底部示例:
//sw-precache generated code...
// *** Start of auto-included sw-toolbox code. ***
/*
Copyright 2016 Google Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
//(!function(e){if("object"==typeof exports&&"undefined"!=typeof module))...
// *** End of auto-included sw-toolbox code. ***
// Runtime cache configuration, using the sw-toolbox library.
toolbox.router.get(/this\\.is\\.a\\.regex/, toolbox.networkFirst, {});
toolbox.options.debug = true;
//Here you can configure your precache:
toolbox.precache([
'/',
'/assets/background.png',
'/assets/logo.png',
'/assets/application.css',
]);
//And here you can configure your policies for any route and asset:
toolbox.router.get('/', toolbox.fastest);
toolbox.router.get('/assets/background.png', toolbox.fastest);
toolbox.router.get('/assets/logo.png', toolbox.fastest);
//Here is the Network First example
toolbox.router.get('/myapp/index.html', toolbox.networkFirst);
我发现这比仅使用 sw-precache
更加有效和灵活。
在这里您可以找到 sw-toolbox Usage Guide有关配置的更多信息。
关于javascript - 用谷歌的sw-precache搭建的service worker真的能做到networkFirst吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43823725/
我需要能够在我的 C 开发环境下使用浮点运算(CPU:~12 MHz Motorola 68000)。标准库不存在,这意味着它是一个简单的 C 而不是 - 由于其他几个问题,它不是 gcc 我尝试编译
我有 4 种不同的设备: 华硕平板电脑,屏幕尺寸 7 英寸 联想平板电脑,屏幕尺寸 7 英寸 HTC 手机,屏幕尺寸 5 英寸 HTC 手机,屏幕尺寸 4.7 英寸 我想知道我的设备的最小宽度 (sw
我正在使用 Java 的下一个版本: openjdk version "1.8.0_111" OpenJDK Runtime Environment (build 1.8.0_111-8u111-
背景 我目前正在为一项家庭作业编写小型 MIPS 程序,并在此过程中学习了一些语言。我对此非常陌生,因此,即使涉及到我正在执行的操作的最基本方面,我也不确定自己。此外,我的导师坚持不在我们的作业中使用
我试图将一个整数存储到 $s0 中,这是在一个循环标签中。 但问题是我将打印一个整数并将其保存在 $s0 中。 我做了以下事情 sw $t7,0($s0) addi $s0,$s0,4 我认为下面的代
我正在开发一个文件系统,它使用 fusion 库和 jnr-fuse ( https://github.com/SerCeMan/jnr-fuse ) 作为 java 绑定(bind)来封装对 Ama
我正在开发一个文件系统,它使用 fusion 库和 jnr-fuse ( https://github.com/SerCeMan/jnr-fuse ) 作为 java 绑定(bind)来封装对 Ama
我正在使用 Google's SW-Toolbox library在我的应用程序中处理服务人员的职责;但是,每当我尝试从 Parse 加载视频(使用 Parse 进行文件托管)时,我都会在控制台中收到
我想创建我的第一个 PWA 应用程序,我想使用 sw-precache .我想在我的应用程序中有推送通知,但我没有看到任何添加 push 的选项通知和notification click听众来自 sw
已解决:删除了编辑文本并显示了键盘使用 imgr.toggleSoftInput(0, 0); 原始问题: 您好,我正在开发具有触摸板/键盘模式的 Remote 应用程序。我的问题是 SW 键盘。当用
此处:http://cs.oswego.edu/pipermail/concurrency-interest/2013-November/011954.html其中一位对话者说: In your re
在FFMpeg中,我们总是问好libswscale和libswresample,但是,libswscale和libswresample中的sw是什么意思呢? 最佳答案 sw 是软件的缩写,表示功能由通
本文整理了Java中com.ctc.wstx.sw.XmlWriterWrapper类的一些代码示例,展示了XmlWriterWrapper类的具体用法。这些代码示例主要来源于Github/Stack
本文整理了Java中com.ctc.wstx.sw.XmlWriter类的一些代码示例,展示了XmlWriter类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven
通过使用 git clone https://github.com/gpac/gpac gpac_public我得到了 1.0.0 版本,rev 156,我需要回到 0.8.0 版本。 我是新的 gi
我有一个非常旧的 perl 系统(大约 8-10 年),但是一个很大(100+ pm 文件)。现在由于某种原因需要“重新现代化”它 - 一步一步。 我想做的第一件事就是将我的编译指示插入每个模块: u
我创建了 layout-sw600dp/layout.xml,它在设备 A 上看起来很棒。但是在设备 B 上,这个布局已经融化并且看起来很糟糕。我想知道我的布局在最坏情况下的外观(正好 600dp 宽
我有以下 sw-precache-config.js module.exports = { staticFileGlobs: [ 'index.html', 'manifest.j
我正在为计算机体系结构类(class)学习 MIPS 汇编。对于本类(class),该类(class)使用 MARS。在将十个数字放入数组中进行分配时,我决定测试一些东西。我想看看我是否可以创建一个循
我正在使用 C 语言进行嵌入式编程(即目标是微 Controller ),并且我可以将我的软件模块作为目标代码(库)提供,供客户团队使用。 通常我习惯以源代码的形式提供我的软件,我知道如何集成(编译、
我是一名优秀的程序员,十分优秀!