Add ServiceWorker caching for static assets (#5524)
parent
6705463ed0
commit
0692991b54
|
@ -3,8 +3,6 @@
|
||||||
%link{ href: asset_pack_path('features/compose.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
|
%link{ href: asset_pack_path('features/compose.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
|
||||||
%link{ href: asset_pack_path('features/home_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
|
%link{ href: asset_pack_path('features/home_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
|
||||||
%link{ href: asset_pack_path('features/notifications.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
|
%link{ href: asset_pack_path('features/notifications.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
|
||||||
%link{ href: asset_pack_path('features/community_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
|
|
||||||
%link{ href: asset_pack_path('features/public_timeline.js'), crossorigin: 'anonymous', rel: 'preload', as: 'script' }/
|
|
||||||
%meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key}
|
%meta{name: 'applicationServerKey', content: Rails.configuration.x.vapid_public_key}
|
||||||
%script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json)
|
%script#initial-state{ type: 'application/json' }!= json_escape(@initial_state_json)
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,37 @@ module.exports = merge(sharedConfig, {
|
||||||
}),
|
}),
|
||||||
new OfflinePlugin({
|
new OfflinePlugin({
|
||||||
publicPath: publicPath, // sw.js must be served from the root to avoid scope issues
|
publicPath: publicPath, // sw.js must be served from the root to avoid scope issues
|
||||||
caches: { }, // do not cache things, we only use it for push notifications for now
|
caches: {
|
||||||
|
main: [':rest:'],
|
||||||
|
additional: [':externals:'],
|
||||||
|
optional: [
|
||||||
|
'**/locale_*.js', // don't fetch every locale; the user only needs one
|
||||||
|
'**/*_polyfills-*.js', // the user may not need polyfills
|
||||||
|
'**/*.woff2', // the user may have system-fonts enabled
|
||||||
|
// images/audio can be cached on-demand
|
||||||
|
'**/*.png',
|
||||||
|
'**/*.jpg',
|
||||||
|
'**/*.jpeg',
|
||||||
|
'**/*.svg',
|
||||||
|
'**/*.mp3',
|
||||||
|
'**/*.ogg',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
externals: [
|
||||||
|
'/emoji/1f602.svg', // used for emoji picker dropdown
|
||||||
|
'/emoji/sheet.png', // used in emoji-mart
|
||||||
|
],
|
||||||
|
excludes: [
|
||||||
|
'**/*.gz',
|
||||||
|
'**/*.map',
|
||||||
|
'stats.json',
|
||||||
|
'report.html',
|
||||||
|
// any browser that supports ServiceWorker will support woff2
|
||||||
|
'**/*.eot',
|
||||||
|
'**/*.ttf',
|
||||||
|
'**/*-webfont-*.svg',
|
||||||
|
'**/*.woff',
|
||||||
|
],
|
||||||
ServiceWorker: {
|
ServiceWorker: {
|
||||||
entry: path.join(__dirname, '../../app/javascript/mastodon/service_worker/entry.js'),
|
entry: path.join(__dirname, '../../app/javascript/mastodon/service_worker/entry.js'),
|
||||||
cacheName: 'mastodon',
|
cacheName: 'mastodon',
|
||||||
|
|
Reference in New Issue