서비스 근로자를 생성 할 때 sw-precache
과 sw-toolbox
을 사용하여 원하는 정책을 얻는 가장 쉬운 방법입니다.
sw-precache
으로 새 서비스 작업자를 생성 할 때 올바른 구성 옵션을 전달하여 생성 된 파일의 끝에 sw-toolbox
코드를 가져올 수도 있습니다. sw-precache Documentation에 따르면
:
sw-precache
모듈은 자체 구성 나란히 sw-toolbox
코드 및 구성을 포함 할 수있는 능력을 가지고 있습니다. sw-precache
(see below)의 runtimeCaching
구성 옵션을 사용하면 서비스 직원에게 sw-toolbox
을 가져 와서 고유 한 라우팅 규칙을 작성하여 수동으로 수행 할 수있는 작업을 수행하는 바로 가기입니다.
이
는
runtimeCaching
옵션의 예는
sw-precache
documentation에 보여입니다 :
runtimeCaching: [{
urlPattern: /^https:\/\/example\.com\/api/,
handler: 'networkFirst'
}, {
urlPattern: /\/articles\//,
handler: 'fastest',
options: {
cache: {
maxEntries: 10,
name: 'articles-cache'
}
}
}]
당신은 선택의 구성과 함께이 옵션을 사용할 수 있습니다. documentation에 명시된 바와 같이
예를 들어, 당신은 설정 파일을 사용할 수 있습니다
--config 사용하여 복잡한 구성을 전달하기위한 지원이있다. 파일의 모든 옵션은 명령 행 플래그를 통해 겹쳐 쓸 수 있습니다. module.exports를 통해 config를 정의하는 외부 JavaScript 파일을 전달하는 것이 좋습니다. 예를 들어, 포함하는 경로에 /이/SW-미리 캐시-config.js 파일이의 가정도 verbose 옵션을 설정하는 동안 파일이
을 통해, 명령 줄 인터페이스에 전달 될 수 있다는
module.exports = {
staticFileGlobs: [
'app/css/**.css',
'app/**.html',
'app/images/**.*',
'app/js/**.js'
],
stripPrefix: 'app/',
runtimeCaching: [{
urlPattern: /this\\.is\\.a\\.regex/,
handler: 'networkFirst'
}]
};
$ sw-precache --config=path/to/sw-precache-config.js --verbose
이렇게하면 runtimeCaching.urlPattern 옵션에 정규 표현식을 제공하는 등의 유연성을 최대로 제공합니다.
또는 당신은 JSON 파일을 사용할 수 있습니다 :
이 덜 유연성을 제공하지만 우리는 또한, --config위한 JSON 파일 전달 지원
:
{
"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
명령을 실행하고이 구성으로 서비스 작업자를 생성 한 후에는 sw-precache
을 사용하는 것보다 precache 및 정책을 훨씬 쉽게 처리 할 수 있습니다.
정책을 파일에 직접 구성하거나 서비스 작업자 코드 맨 아래에 수동으로 추가 할 수 있습니다. 여기
는 생성 된 코드의 바닥 부분의 예는 다음과 같습니다
//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을 참조하십시오.
사이트 사용자를로드 할 때 항상 캐시 된 버전이 나타나거나 서비스 작업자 사용자를 업데이트 할 때 두 번째 페이지가로드 될 때까지 새로운 서비스 작업자가 변경된 것을 볼 수 없다는 문제가 있습니까? – abraham
@abraham, 의견 주셔서 감사합니다. 그것은 두 번째 옵션입니다. 예를 들어 새로운 기사로 사이트를 업데이트하면 (예를 들어 작업자에 의해) 두 번째로 동일한 페이지 또는 사이트의 다른 페이지가로드 될 때까지 사용자는 변경 사항을 볼 수 없습니다. –
가능한 중복은 여기에 설명 된 것과 동일한 문제로 보입니다. http : // stackoverflow.com/questions/41422474/new-version-available-with-service-worker-and-sw-precache – lax1089