@YELEM

Как исправить ошибку, c обновлением JSON запроса?

Есть код на PHP который формирует JSON запрос из массива
На каждой страницу формируется свой JSON со своим порядком (то есть на каждой странице JSON перезаписывается)
// подготовка json

// Преобразуем массив в формат JSON
$jsonData = json_encode($relises);
// Указываем путь к файлу
$filePath = "assets/json/traks.json";

// Записываем данные в файл
file_put_contents($filePath, $jsonData);

// Проверяем, был ли файл успешно создан и данные записаны
if (file_exists($filePath)) {
    // echo "JSON-файл успешно создан и данные записаны.";
} else {
    echo "Ошибка при создании JSON-файла или записи данных.";
}


В последующем из этого JSON, JavaScript подгружает треки

fetch('../assets/json/traks.json')
    .then(response => response.json())
    .then(data => {
        tracks = data; // Сохраняем данные в переменную


        console.log(tracks); // Вывод данных в консоль

        // Пример использования данных
        tracks.forEach(item => {
            // console.log(item); // Вывод каждого элемента массива в консоль
        });
    })
    .catch(error => {
        // Обработка ошибок
        console.error('Ошибка:', error);
    });


Проблема заключается в том, что при переходе по страницам из кеша браузера (например: используя стрелочки), json не обновляется


Пример:
Зашли на страницу 1 - В файл traks записался JSON-1
Зашли на страницу 2 - В файлe traks обновился JSON-2
Вернулись на страницу 1 - В файле traks остался JSON-2


Варианты которые НЕ помогли:
<!-- Теги с директивами "не кешировать" для браузера и "узлов" веб-сети -->
    <meta http-equiv="cache-control" content="no-cache, no-store, must-revalidate" />
    <meta http-equiv="pragma" content="no-cache" />
    <meta http-equiv="expires" content="0" />


//Начало файла index.php или любой другой станицы
clearstatcache();
  • Вопрос задан
  • 114 просмотров
Решения вопроса 1
@TimsTims
Ошибка заключается в том, что браузер , выполняя инструкции веб сервера (в F12 посмотрите что вам приходит в заголовке "cache") закешировал ваш json. Вариантов решения несколько:
1) самый правильный - докрутить настройки веб сервера, чтобы он на файлы с типом json выдавал заголовок cache: nocache
2) костыльный вариант - в своем js скрипте когда обращаетесь к json, приписывайте ещё через знако вопроса метку времени. Браузер будет думать, что это что-то новое, в Кеше этих данных ещё нет, и отправит новый запрос.
То есть вместо
Fetch ("....json")
Пишите
Fetch ("....json? timestamp")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы