问题描述
我遇到了很长的 TTFB 时间,大约 15000/17000 毫秒和一个 GET 请求。这只发生在一个特定的调用中,其他都很好。
我是在添加 Nuxt Auth 和 Laravel Sanctum 后才开始体验这个的。 在完成请求并给出 JSON 结果之前,请求保持挂起状态(在调试器网络选项卡下)大约 10 秒。
这是我的nuxt.confing.js
RecyclerView::setAdapter
Nuxt 页面(为了方便我只放了js代码)
export default {
srcDir: 'resources/nuxt',ssr: false,head: {
titleTemplate: '%s - ' + process.env.APP_VERSION,title: process.env.APP_NAME || '',meta: [
{ charset: 'utf-8' },{
name: 'viewport',content: 'width=device-width,initial-scale=1'
},{
hid: 'description',name: 'description',content: process.env.npm_package_description || ''
}
],link: [
{ rel: 'icon',type: 'image/x-icon',href: '/favicon.ico' },{ rel: 'stylesheet',href: 'https://raw.githack.com/lucperkins/bulma-dashboard/master/dist/bulma-dashboard.css' }
]
},loading: { color: '#fff' },css: [
'@/assets/main.scss'
],plugins: [
"~/plugins/vee-validate.js"
],components: true,buildModules: [
'@nuxtjs/dotenv','@nuxtjs/eslint-module','@nuxtjs/fontawesome','@nuxtjs/moment',],modules: [
'nuxt-laravel',// Doc: https://axios.nuxtjs.org/usage
'@nuxtjs/axios','nuxt-buefy','nuxt-fontawesome','@nuxtjs/auth-next'
],build: {
transpile: [/@fullcalendar.*/,"vee-validate/dist/rules"],extend(config,ctx) {
config.module.rules.push({
enforce: 'pre',test: /\.(js|vue)$/,loader: 'eslint-loader',exclude: /(node_modules)/,options: {
fix: true
}
})
}
},axios: {
baseURL: process.env.API_URL,debug: true,credentials: true
},auth: {
redirect: {
login: '/login',logout: '/',callback: '/login',home: '/dashboard/'
},strategies: {
'laravelSanctum': {
provider: 'laravel/sanctum',url: process.env.API_URL
}
},localStorage: false
},buefy: {
materialDesignIcons: false,defaultIconPack: 'fas',defaultIconComponent: 'font-awesome-icon'
},router: {
base: '/dashboard/',linkActiveClass: 'is-active',middleware: ['auth']
},fontawesome: {
icons: {
solid: true
}
}
}
Laravel 控制器 组件“Fullcalendar”通过“resources: '/api/sessions'”运行一个GET请求,该请求转到以下代码。
<script>
// https://www.tutsmake.com/laravel-vue-js-full-calendar-example/
import FullCalendar from '@fullcalendar/vue'
import timeGridPlugin from '@fullcalendar/timegrid'
import resourceTimelinePlugin from '@fullcalendar/resource-timeline'
export default {
components: {
FullCalendar
},data() {
return {
sessions: [],todayDisabled: true,calTitle: '',calendarOptions: {
plugins: [timeGridPlugin,resourceTimelinePlugin],schedulerLicenseKey: 'CC-Attribution-NonCommercial-NoDerivatives',initialView: 'timeGridWeek',refetchResourcesOnNavigate: true,-->> resources: '/api/sessions',//the very long call
eventDisplay: 'block',contentHeight: 'auto',nowIndicator: true,locale: 'en-gb',timezone: 'Europe/London',// without this,after Daylight Saving Time the event goes 1 hour back
headerToolbar: false,businessHours: [
{
daysOfWeek: [1,2,3,4,5],startTime: '08:00',endTime: '20:00'
},{
daysOfWeek: [6],startTime: '9:00',endTime: '14:00'
}
],slotMinTime: '07:00:00',slotMaxTime: '24:00:00',expandRows: true,eventClick: (calendar) => {
this.$router.push({
name: 'calendar-id-sessiondate',params: {
id: calendar.event.id,sessiondate: this.$moment(calendar.event.start).format(
'YYYY-MM-DD'
)
}
})
},datesSet: (dateInfo) => {
this.calTitle = dateInfo.view.title
this.todayDisabled = this.$moment().isBetween(
dateInfo.start,dateInfo.end
)
}
}
}
}
}
</script>
ps:我还尝试查看问题是否出在 Fullcalendar 上。通过 axios 调用,问题仍然存在。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)