Refactor CSV data loading in 'vereinsmeisterschaften.vue' and 'cms/vereinsmeisterschaften.vue' to utilize API endpoints instead of static files, addressing cache issues. Update debugging logs to reflect new data source and improve response header logging for better traceability.
This commit is contained in:
@@ -335,9 +335,9 @@ const formData = ref({
|
||||
|
||||
const loadResults = async () => {
|
||||
try {
|
||||
// Cache-Busting: Füge Timestamp hinzu, um sicherzustellen, dass wir die neueste Version laden
|
||||
// Verwende API-Endpoint statt statische Datei, um Cache-Probleme zu vermeiden
|
||||
const timestamp = new Date().getTime()
|
||||
const response = await fetch(`/data/vereinsmeisterschaften.csv?t=${timestamp}`, {
|
||||
const response = await fetch(`/api/vereinsmeisterschaften?t=${timestamp}`, {
|
||||
cache: 'no-cache',
|
||||
headers: {
|
||||
'Cache-Control': 'no-cache'
|
||||
@@ -345,10 +345,10 @@ const loadResults = async () => {
|
||||
})
|
||||
|
||||
console.log('=== FRONTEND LOAD DEBUG ===')
|
||||
console.log('Load URL:', `/data/vereinsmeisterschaften.csv?t=${timestamp}`)
|
||||
console.log('Load URL:', `/api/vereinsmeisterschaften?t=${timestamp}`)
|
||||
console.log('Response Status:', response.status)
|
||||
console.log('Response Headers - Last-Modified:', response.headers.get('last-modified'))
|
||||
console.log('Response Headers - ETag:', response.headers.get('etag'))
|
||||
console.log('Response Headers - Content-Type:', response.headers.get('content-type'))
|
||||
console.log('Response Headers - Cache-Control:', response.headers.get('cache-control'))
|
||||
|
||||
if (!response.ok) {
|
||||
console.error('Fehler beim Laden - Response nicht OK:', response.status)
|
||||
|
||||
@@ -159,7 +159,8 @@ const selectedYear = ref('alle')
|
||||
|
||||
const loadResults = async () => {
|
||||
try {
|
||||
const response = await fetch('/data/vereinsmeisterschaften.csv')
|
||||
// Verwende API-Endpoint statt statische Datei, um Cache-Probleme zu vermeiden
|
||||
const response = await fetch('/api/vereinsmeisterschaften')
|
||||
if (!response.ok) return
|
||||
|
||||
const csv = await response.text()
|
||||
|
||||
40
server/api/vereinsmeisterschaften.get.js
Normal file
40
server/api/vereinsmeisterschaften.get.js
Normal file
@@ -0,0 +1,40 @@
|
||||
import { promises as fs } from 'fs'
|
||||
import path from 'path'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
try {
|
||||
const cwd = process.cwd()
|
||||
|
||||
// In production (.output/server), working dir is .output
|
||||
let csvPath
|
||||
if (cwd.endsWith('.output')) {
|
||||
csvPath = path.join(cwd, '../public/data/vereinsmeisterschaften.csv')
|
||||
} else {
|
||||
csvPath = path.join(cwd, 'public/data/vereinsmeisterschaften.csv')
|
||||
}
|
||||
|
||||
// CSV-Datei direkt als Text zurückgeben (keine Caching-Probleme)
|
||||
const csv = await fs.readFile(csvPath, 'utf-8')
|
||||
|
||||
// Setze Content-Type und Cache-Control Header
|
||||
setHeader(event, 'Content-Type', 'text/csv; charset=utf-8')
|
||||
setHeader(event, 'Cache-Control', 'no-cache, no-store, must-revalidate')
|
||||
setHeader(event, 'Pragma', 'no-cache')
|
||||
setHeader(event, 'Expires', '0')
|
||||
|
||||
return csv
|
||||
} catch (error) {
|
||||
if (error.code === 'ENOENT') {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
statusMessage: 'Vereinsmeisterschaften-Datei nicht gefunden'
|
||||
})
|
||||
}
|
||||
console.error('Fehler beim Laden der Vereinsmeisterschaften:', error)
|
||||
throw createError({
|
||||
statusCode: 500,
|
||||
statusMessage: 'Fehler beim Laden der Vereinsmeisterschaften'
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user