feat: utilities - cache
This commit is contained in:
parent
13f172978f
commit
dc4fa9b31e
@ -149,7 +149,7 @@
|
|||||||
v-flex.text-xs-right(xs5).caption.grey--text.text-darken-2 {{ page.updatedAt | moment('calendar') }}
|
v-flex.text-xs-right(xs5).caption.grey--text.text-darken-2 {{ page.updatedAt | moment('calendar') }}
|
||||||
v-timeline-item(hide-dot, small)
|
v-timeline-item(hide-dot, small)
|
||||||
.body-1 ...
|
.body-1 ...
|
||||||
v-btn.mx-0(outline, color='grey') View Full History
|
v-btn.mx-0(outline, color='grey', :href='`/h/` + page.locale + `/` + page.path') View Full History
|
||||||
.body-1 ...
|
.body-1 ...
|
||||||
v-timeline-item(color='pink', small)
|
v-timeline-item(color='pink', small)
|
||||||
v-layout(justify-space-between)
|
v-layout(justify-space-between)
|
||||||
|
@ -3,27 +3,83 @@
|
|||||||
v-toolbar(flat, color='primary', dark, dense)
|
v-toolbar(flat, color='primary', dark, dense)
|
||||||
.subheading {{ $t('admin:utilities.cacheTitle') }}
|
.subheading {{ $t('admin:utilities.cacheTitle') }}
|
||||||
v-card-text
|
v-card-text
|
||||||
v-subheader.pl-0 Flush Pages Cache
|
v-subheader.pl-0 Flush Pages and Assets Cache
|
||||||
.body-1 Pages are cached to disk for better performance. You can flush the cache to force all content to be fetched from the DB again.
|
.body-1 Pages and Assets are cached to disk for better performance. You can flush the cache to force all content to be fetched from the DB again.
|
||||||
v-btn(outline, color='primary').ml-0.mt-3
|
v-btn(outline, color='primary', @click='flushCache', :disabled='loading').ml-0.mt-3
|
||||||
v-icon(left) build
|
|
||||||
span Proceed
|
|
||||||
v-divider.my-3
|
|
||||||
v-subheader.pl-0 Flush Assets Cache
|
|
||||||
.body-1 Assets such as images and other files are cached to disk for better performance. You can flush the cache to force all assets to be fetched from the DB again.
|
|
||||||
v-btn(outline, color='primary').ml-0.mt-3
|
|
||||||
v-icon(left) build
|
v-icon(left) build
|
||||||
span Proceed
|
span Proceed
|
||||||
v-divider.my-3
|
v-divider.my-3
|
||||||
v-subheader.pl-0 Flush Temporary Uploads
|
v-subheader.pl-0 Flush Temporary Uploads
|
||||||
.body-1 New uploads are temporarily saved to disk while they are being processed. They are automatically deleted after processing, but you can force an immediate cleanup using this tool.
|
.body-1 New uploads are temporarily saved to disk while they are being processed. They are automatically deleted after processing, but you can force an immediate cleanup using this tool.
|
||||||
v-btn(outline, color='primary').ml-0.mt-3
|
.body-1.red--text Note that performing this action while an upload is in progress can result in a failed upload.
|
||||||
|
v-btn(outline, color='primary', @click='flushUploads', :disabled='loading').ml-0.mt-3
|
||||||
v-icon(left) build
|
v-icon(left) build
|
||||||
span Proceed
|
span Proceed
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import _ from 'lodash'
|
||||||
|
import utilityCacheFlushCacheMutation from 'gql/admin/utilities/utilities-mutation-cache-flushcache.gql'
|
||||||
|
import utilityCacheFlushUploadsMutation from 'gql/admin/utilities/utilities-mutation-cache-flushuploads.gql'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
loading: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
async flushCache() {
|
||||||
|
this.loading = true
|
||||||
|
this.$store.commit(`loadingStart`, 'admin-utilities-cache-flushCache')
|
||||||
|
|
||||||
|
try {
|
||||||
|
const respRaw = await this.$apollo.mutate({
|
||||||
|
mutation: utilityCacheFlushCacheMutation
|
||||||
|
})
|
||||||
|
const resp = _.get(respRaw, 'data.pages.flushCache.responseResult', {})
|
||||||
|
if (resp.succeeded) {
|
||||||
|
this.$store.commit('showNotification', {
|
||||||
|
message: 'Cache flushed successfully.',
|
||||||
|
style: 'success',
|
||||||
|
icon: 'check'
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
throw new Error(resp.message)
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
this.$store.commit('pushGraphError', err)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$store.commit(`loadingStop`, 'admin-utilities-cache-flushCache')
|
||||||
|
this.loading = false
|
||||||
|
},
|
||||||
|
async flushUploads() {
|
||||||
|
this.loading = true
|
||||||
|
this.$store.commit(`loadingStart`, 'admin-utilities-cache-flushUploads')
|
||||||
|
|
||||||
|
try {
|
||||||
|
const respRaw = await this.$apollo.mutate({
|
||||||
|
mutation: utilityCacheFlushUploadsMutation
|
||||||
|
})
|
||||||
|
const resp = _.get(respRaw, 'data.assets.flushTempUploads.responseResult', {})
|
||||||
|
if (resp.succeeded) {
|
||||||
|
this.$store.commit('showNotification', {
|
||||||
|
message: 'Temporary Uploads flushed successfully.',
|
||||||
|
style: 'success',
|
||||||
|
icon: 'check'
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
throw new Error(resp.message)
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
this.$store.commit('pushGraphError', err)
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$store.commit(`loadingStop`, 'admin-utilities-cache-flushUploads')
|
||||||
|
this.loading = false
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
mutation {
|
||||||
|
pages {
|
||||||
|
flushCache {
|
||||||
|
responseResult {
|
||||||
|
succeeded
|
||||||
|
errorCode
|
||||||
|
slug
|
||||||
|
message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
mutation {
|
||||||
|
assets {
|
||||||
|
flushTempUploads {
|
||||||
|
responseResult {
|
||||||
|
succeeded
|
||||||
|
errorCode
|
||||||
|
slug
|
||||||
|
message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -154,6 +154,19 @@ module.exports = {
|
|||||||
} catch (err) {
|
} catch (err) {
|
||||||
return graphHelper.generateError(err)
|
return graphHelper.generateError(err)
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Flush Temporary Uploads
|
||||||
|
*/
|
||||||
|
async flushTempUploads(obj, args, context) {
|
||||||
|
try {
|
||||||
|
await WIKI.models.assets.flushTempUploads()
|
||||||
|
return {
|
||||||
|
responseResult: graphHelper.generateSuccess('Temporary Uploads have been flushed successfully.')
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
return graphHelper.generateError(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// File: {
|
// File: {
|
||||||
|
@ -85,6 +85,16 @@ module.exports = {
|
|||||||
responseResult: graphHelper.generateSuccess('Page has been updated.'),
|
responseResult: graphHelper.generateSuccess('Page has been updated.'),
|
||||||
page
|
page
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
async flushCache(obj, args, context) {
|
||||||
|
try {
|
||||||
|
await WIKI.models.pages.flushCache()
|
||||||
|
return {
|
||||||
|
responseResult: graphHelper.generateSuccess('Pages Cache has been flushed successfully.')
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
return graphHelper.generateError(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
Page: {
|
Page: {
|
||||||
|
@ -44,6 +44,8 @@ type AssetMutation {
|
|||||||
deleteAsset(
|
deleteAsset(
|
||||||
id: Int!
|
id: Int!
|
||||||
): DefaultResponse @auth(requires: ["manage:system", "manage:assets"])
|
): DefaultResponse @auth(requires: ["manage:system", "manage:assets"])
|
||||||
|
|
||||||
|
flushTempUploads: DefaultResponse @auth(requires: ["manage:system"])
|
||||||
}
|
}
|
||||||
|
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
|
@ -71,6 +71,8 @@ type PageMutation {
|
|||||||
delete(
|
delete(
|
||||||
id: Int!
|
id: Int!
|
||||||
): DefaultResponse @auth(requires: ["delete:pages", "manage:system"])
|
): DefaultResponse @auth(requires: ["delete:pages", "manage:system"])
|
||||||
|
|
||||||
|
flushCache: DefaultResponse @auth(requires: ["manage:system"])
|
||||||
}
|
}
|
||||||
|
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
|
@ -164,4 +164,8 @@ module.exports = class Asset extends Model {
|
|||||||
res.sendStatus(404)
|
res.sendStatus(404)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async flushTempUploads() {
|
||||||
|
return fs.emptyDir(path.join(process.cwd(), `data/uploads`))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -417,6 +417,10 @@ module.exports = class Page extends Model {
|
|||||||
return fs.remove(path.join(process.cwd(), `data/cache/${page.hash}.bin`))
|
return fs.remove(path.join(process.cwd(), `data/cache/${page.hash}.bin`))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static async flushCache() {
|
||||||
|
return fs.emptyDir(path.join(process.cwd(), `data/cache`))
|
||||||
|
}
|
||||||
|
|
||||||
static cleanHTML(rawHTML = '') {
|
static cleanHTML(rawHTML = '') {
|
||||||
return striptags(rawHTML || '')
|
return striptags(rawHTML || '')
|
||||||
.replace(emojiRegex(), '')
|
.replace(emojiRegex(), '')
|
||||||
|
Loading…
Reference in New Issue
Block a user