Skip to content

Commit b9b93ea

Browse files
committed
Remove CDN, patch offline process
1 parent e97e798 commit b9b93ea

File tree

7 files changed

+153
-138
lines changed

7 files changed

+153
-138
lines changed

index.html

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,16 @@
1313
<meta name="apple-mobile-web-app-title" content="Full Stack Weekly">
1414
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
1515
<meta name="theme-color" content="#287ab1">
16-
<link rel="apple-touch-icon" sizes="180x180" href="{{ CDN }}/app-icon.png">
16+
<link rel="apple-touch-icon" sizes="180x180" href="/assets/app-icon.png">
1717
<meta name="viewport" content="initial-scale=1, maximum-scale=1, minimal-ui">
1818
<link rel="manifest" href="/assets/manifest.json" />
19-
{{ STYLES }}
20-
{{ STATE }}
19+
<link rel="stylesheet" href="/assets/styles.css" media="all">
20+
<meta name="vue-state" />
2121
</head>
2222
<body>
23-
{{ APP }}
24-
{{ SCRIPTS }}
23+
<div id="app"></div>
24+
<script defer src="/assets/js/vendor.js"></script>
25+
<script defer src="/assets/js/app.js"></script>
2526
<script>
2627
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
2728
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

server.js

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
process.env.VUE_ENV = 'server'
44
const isProd = !(process.env.NODE_ENV === 'development')
5-
const cdnClient = (isProd) ? 'https://fullstackweekly-client.azureedge.net' : '/assets'
65
const fs = require('fs')
76
const path = require('path')
87
const resolve = file => path.resolve(__dirname, file)
@@ -47,16 +46,9 @@ const indexHTML = (() => {
4746
let template = ''
4847
if (isProd) {
4948
template = fs.readFileSync(resolve('./dist/index.html'), 'utf-8')
50-
template = template.replace(/{{ SCRIPTS }}/gmi, '')
51-
template = template.replace('{{ STYLES }}', '')
52-
template = template.replace('<link href="/assets/styles', '<link rel="stylesheet" href="{{ CDN }}/styles media="all" ')
53-
template = template.replace(/<script type="text\/javascript" src="\/assets/gmi, '<script type="text/javascript" src="{{ CDN }}/')
5449
} else {
5550
template = fs.readFileSync(resolve('./index.html'), 'utf-8')
56-
template = template.replace('{{ STYLES }}', '<link rel="stylesheet" href="{{ CDN }}/styles.css" media="all">')
57-
template = template.replace(/{{ SCRIPTS }}/gmi, '<script defer src="{{ CDN }}/js/vendor.js"></script><script defer src="{{ CDN }}/js/app.js"></script>')
5851
}
59-
template = template.replace(/{{ CDN }}/gmi, cdnClient)
6052
return template
6153
})()
6254

@@ -76,6 +68,8 @@ if (isProd) {
7668
app.use(favicon(path.resolve(__dirname, './dist/favicon.ico')))
7769
} else {
7870
app.use('/dist', express.static(resolve('./dist')))
71+
app.use('/service-worker.js', express.static(resolve('./src/service-worker.js')))
72+
app.use('/sw_config.js', express.static(resolve('./src/assets/sw-config.js')))
7973
app.use(favicon(path.resolve(__dirname, 'src/assets/favicon.ico')))
8074
}
8175

@@ -103,8 +97,8 @@ app.get('*', (req, res) => {
10397
console.log(err.message)
10498
return res.status(200).send('Server Error')
10599
}
106-
html = indexHTML.replace('{{ APP }}', html)
107-
html = html.replace('{{ STATE }}', `<script>window.__INITIAL_STATE__=${serialize(context.initialState, { isJSON: true })}</script>`)
100+
html = indexHTML.replace('<div id="app"></div>', html)
101+
html = html.replace('<meta name="vue-state" />', `<script>window.__INITIAL_STATE__=${serialize(context.initialState, { isJSON: true })}</script>`)
108102
res.setHeader('Content-Length', Buffer.byteLength(html))
109103
res.write(html)
110104
res.end()

src/app.service.cache.js

Lines changed: 58 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -4,45 +4,54 @@ import Config from './app.config.js'
44
import request from 'axios'
55
import localforage from 'localforage'
66

7-
request.defaults.baseURL = Config.wpDomain
7+
// request.defaults.baseURL = Config.wpDomain
88

99
const cacheService = {
1010
store: '',
1111
storeCacheTime: '',
1212
currentTime: '',
1313
isBrowser: false,
14+
networkRequest: (path, cacheTime, resolve, reject) => {
15+
cacheService
16+
.networkFirstStrategy(path, cacheTime)
17+
.then(response => resolve(response))
18+
.catch(err => reject(err))
19+
},
1420
networkFirstStrategy: (path, cacheTime) => {
1521
return new Promise((resolve, reject) => {
1622
request
1723
.get(path)
1824
.then(response => {
1925
// Response returned, cache it and return it
2026
if (response.status === 200) {
21-
if (cacheService.isBrowser) {
22-
cacheService.storeCacheTime.setItem(
23-
path,
24-
cacheService.currentTime + cacheTime
25-
)
26-
cacheService.store
27-
.setItem(path, {
28-
data: response.data,
29-
headers: response.headers
30-
})
31-
.then(response => resolve(response))
32-
.catch(err => reject(err))
33-
} else {
27+
if (!cacheService.isBrowser) {
3428
resolve(response)
29+
return
3530
}
36-
} else {
37-
if (cacheService.isBrowser) {
38-
cacheService.store
39-
.getItem(path)
40-
.then(response => resolve(response))
41-
.catch(err => reject(err))
42-
} else {
43-
reject(new Error('Cannot get ' + path))
44-
}
31+
cacheService.storeCacheTime.setItem(
32+
path,
33+
cacheService.currentTime + cacheTime
34+
)
35+
cacheService.store
36+
.setItem(path, {
37+
data: response.data,
38+
headers: response.headers
39+
})
40+
.then(response => resolve(response))
41+
.catch(err => reject(err))
42+
43+
return
44+
}
45+
46+
if (!cacheService.isBrowser) {
47+
reject(new Error('Cannot get ' + path))
48+
return
4549
}
50+
51+
cacheService.store
52+
.getItem(path)
53+
.then(response => resolve(response))
54+
.catch(err => reject(err))
4655
})
4756
.catch(error => {
4857
console.log(error)
@@ -56,52 +65,42 @@ const cacheService = {
5665
.then(function (timeLastCached) {
5766
// Cache has expired
5867
if (timeLastCached < cacheService.currentTime) {
59-
cacheService
60-
.networkFirstStrategy(path, cacheTime)
61-
.then(response => {
68+
cacheService.networkRequest(path, cacheTime, resolve, reject)
69+
70+
return
71+
}
72+
73+
cacheService.store
74+
.getItem(path)
75+
.then(response => {
76+
if (response) {
77+
// Is in cache perfect!
6278
resolve(response)
63-
})
64-
.catch(err => reject(err))
65-
} else {
66-
// Get item from cache
67-
cacheService.store
68-
.getItem(path)
69-
.then(response => {
70-
if (response) {
71-
// Is in cache perfect!
72-
resolve(response)
73-
} else {
74-
// Doesn't exist in cache try network
75-
cacheService
76-
.networkFirstStrategy(path, cacheTime)
77-
.then(response => resolve(response))
78-
.catch(err => reject(err))
79-
}
80-
})
81-
.catch(error => {
82-
console.log(error)
79+
} else {
8380
// Doesn't exist in cache try network
84-
cacheService
85-
.networkFirstStrategy(path, cacheTime)
86-
.then(response => resolve(response))
87-
.catch(err => reject(err))
88-
})
89-
}
81+
cacheService.networkRequest(path, cacheTime, resolve, reject)
82+
}
83+
})
84+
.catch(error => {
85+
console.log(error)
86+
// Doesn't exist in cache try network
87+
cacheService.networkRequest(path, cacheTime, resolve, reject)
88+
})
9089
})
9190
.catch(error => {
9291
console.log(error)
9392
// Doesn't exist in cache timeouts try network
94-
cacheService
95-
.networkFirstStrategy(path, cacheTime)
96-
.then(response => resolve(response))
97-
.catch(err => reject(err))
93+
cacheService.networkRequest(path, cacheTime, resolve, reject)
9894
})
9995
})
10096
},
10197
get: function (path, cacheTime) {
98+
// path = Config.wpDomain + path
99+
102100
return new Promise((resolve, reject) => {
103101
cacheService.currentTime = Math.floor(Date.now() / 1000)
104102
cacheService.isBrowser = typeof window !== 'undefined'
103+
105104
if (cacheService.isBrowser) {
106105
cacheService.store = localforage.createInstance({
107106
name: Config.loadDbName
@@ -110,15 +109,12 @@ const cacheService = {
110109
name: Config.loadDbName + '_cacheTime'
111110
})
112111
}
112+
113113
if (!cacheTime || cacheTime === 0) {
114114
cacheService
115115
.networkFirstStrategy(path, 0)
116116
.then(response => {
117-
if (!response) {
118-
resolve('')
119-
} else {
120-
resolve(response)
121-
}
117+
resolve(response || '')
122118
})
123119
.catch(err => {
124120
reject(err)
@@ -127,11 +123,7 @@ const cacheService = {
127123
cacheService
128124
.offlineFirstStrategy(path, cacheTime)
129125
.then(response => {
130-
if (!response) {
131-
resolve('')
132-
} else {
133-
resolve(response)
134-
}
126+
resolve(response || '')
135127
})
136128
.catch(err => reject(err))
137129
}

src/assets/robots.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
User-agent: *
2-
Allow: /
2+
Disallow: /

src/assets/sw-config.js

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
var config = {
2+
"assets": [
3+
"/favicon.ico",
4+
"/robots.txt",
5+
"/index.html",
6+
"/assets/app-icon.png",
7+
"/assets/fontello.svg",
8+
"/assets/styles.css",
9+
"/assets/styles.css.map",
10+
"/assets/styles.css",
11+
"/assets/js/app.js",
12+
"/assets/js/vendor.js",
13+
"/"
14+
],
15+
"paths": {
16+
"api": "https://fullstackweekly.azureedge.net/wp-json",
17+
"remote": "https://fullstackweekly.azureedge.net/",
18+
"client": "http://localhost:3000/"
19+
},
20+
"cacheNames": {
21+
"assetCache": "vwpCacheAsset",
22+
"remoteCache": "vwpCacheRemote"
23+
}
24+
}

0 commit comments

Comments
 (0)