109 lines
4.0 KiB
Vue
109 lines
4.0 KiB
Vue
<template lang='pug'>
|
|
v-card
|
|
v-toolbar(flat, color='primary', dark, dense)
|
|
.subtitle-1 {{ $t('admin:utilities.cacheTitle') }}
|
|
v-card-text
|
|
.subtitle-1.pb-3.primary--text Flush Pages and Assets Cache
|
|
.body-2 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(outlined, color='primary', @click='flushCache', :disabled='loading').ml-0.mt-3
|
|
v-icon(left) mdi-gesture-double-tap
|
|
span Proceed
|
|
v-divider.my-5
|
|
.subtitle-1.pb-3.primary--text Flush Temporary Uploads
|
|
.body-2 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-2.red--text Note that performing this action while an upload is in progress can result in a failed upload.
|
|
v-btn(outlined, color='primary', @click='flushUploads', :disabled='loading').ml-0.mt-3
|
|
v-icon(left) mdi-gesture-double-tap
|
|
span Proceed
|
|
v-divider.my-5
|
|
.subtitle-1.pb-3.primary--text Flush Client-Side Locale Cache
|
|
.body-2 Locale strings are cached in the browser local storage for 24h. You can delete your current cache in order to fetch the latest data during the next page load.
|
|
.body-2 Note that this affects only #[strong your own browser] and not everyone.
|
|
v-btn(outlined, color='primary', @click='flushClientLocaleCache', :disabled='loading').ml-0.mt-3
|
|
v-icon(left) mdi-gesture-double-tap
|
|
span Proceed
|
|
</template>
|
|
|
|
<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 {
|
|
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
|
|
},
|
|
async flushClientLocaleCache () {
|
|
for (let i = 0; i < window.localStorage.length; i++) {
|
|
const lsKey = window.localStorage.key(i)
|
|
if (_.startsWith(lsKey, 'i18next_res')) {
|
|
window.localStorage.removeItem(lsKey)
|
|
}
|
|
}
|
|
this.$store.commit('showNotification', {
|
|
message: 'Locale Client-Side Cache flushed successfully.',
|
|
style: 'success',
|
|
icon: 'check'
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang='scss'>
|
|
|
|
</style>
|