From 02bccb7c813c285f132faf6976b75cd95f4e5692 Mon Sep 17 00:00:00 2001 From: sgametrio Date: Thu, 18 May 2017 22:12:41 +0200 Subject: [PATCH 1/2] add PWA support with little caching --- template/build/webpack.prod.conf.js | 21 +++++++++++++++++++++ template/package.json | 1 + template/src/index.html | 8 +++++++- template/src/statics/logo.png | Bin 0 -> 9539 bytes template/src/statics/manifest.json | 17 +++++++++++++++++ 5 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 template/src/statics/logo.png create mode 100644 template/src/statics/manifest.json diff --git a/template/build/webpack.prod.conf.js b/template/build/webpack.prod.conf.js index 7ab7bfd..a772e6b 100644 --- a/template/build/webpack.prod.conf.js +++ b/template/build/webpack.prod.conf.js @@ -8,6 +8,7 @@ var ExtractTextPlugin = require('extract-text-webpack-plugin'), HtmlWebpackPlugin = require('html-webpack-plugin'), OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') + SWPrecachePlugin = require('sw-precache-webpack-plugin') module.exports = merge(baseWebpackConfig, { module: { @@ -70,6 +71,26 @@ module.exports = merge(baseWebpackConfig, { new webpack.optimize.CommonsChunkPlugin({ name: 'manifest', chunks: ['vendor'] + }), + // auto generate service-worker for caching static files + new SWPrecachePlugin({ + cacheId: 'quasar-app', + filename: 'service-worker-cache.js', + minify: true, + + staticFileGlobs: [ + 'js/**.js', + '/**.css' + ], + + runtimeCaching: [{ + urlPattern: /\/.*/, + handler: 'networkFirst' + }], + + dontCacheBustUrlsMatching: /./, + navigateFallback: '/' + }) ] }) diff --git a/template/package.json b/template/package.json index 54ae76c..7ebdcb8 100644 --- a/template/package.json +++ b/template/package.json @@ -16,6 +16,7 @@ "moment": "^2.15.0", "quasar-framework": "^0.13.4", "roboto-fontface": "^0.7.0", + "sw-precache-webpack-plugin": "^0.11.0", "vue": "^2.3.0", "vue-router": "^2.0.0" }, diff --git a/template/src/index.html b/template/src/index.html index d79d5dd..772df97 100644 --- a/template/src/index.html +++ b/template/src/index.html @@ -5,9 +5,15 @@ - + Quasar App +
diff --git a/template/src/statics/logo.png b/template/src/statics/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..0349c800874f63e63c363e64c999ddf8ae4432a4 GIT binary patch literal 9539 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 h%+C Date: Wed, 31 May 2017 09:53:28 +0200 Subject: [PATCH 2/2] Add static files caching, change runtime caching method --- template/build/webpack.prod.conf.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/template/build/webpack.prod.conf.js b/template/build/webpack.prod.conf.js index a772e6b..cce3cea 100644 --- a/template/build/webpack.prod.conf.js +++ b/template/build/webpack.prod.conf.js @@ -80,12 +80,15 @@ module.exports = merge(baseWebpackConfig, { staticFileGlobs: [ 'js/**.js', + 'fonts/**.woff', + 'statics/*', + '/**.html', '/**.css' ], runtimeCaching: [{ urlPattern: /\/.*/, - handler: 'networkFirst' + handler: 'cacheFirst' }], dontCacheBustUrlsMatching: /./,