Почему laravel (красноречивый) кэширует последний ответ от маршрута api?

Я создаю реактивную панель управления с Laravel / VueJS. Когда панель управления работает и соединение с сокетом установлено, моя идея состоит в том, чтобы синхронизировать всех клиентов с одним и тем же userId, и после повторного подключения я отправляю запрос в конечную точку, и я снова synchronized. Синхронизация необходима, потому что все пользователи могут фактически изменять некоторые конфигурации панели инструментов, например выбирать элементы сетки, изменять их размер или перетаскивать их в другое место.

Я бросаю вызов проблеме, когда после повторного подключения к сокетам я отправляю запрос в базу данных, чтобы снова получить данные, и получаю тот же ответ, что и на запрос инициализации. Данные не обновляются.

Но когда я снова отключаюсь и подключаюсь еще раз. Данные снова синхронизируются. И я получаю обновленные данные для второго звонка.

Я думал, что это из-за заголовков управления кешем, но мне это ничего не дает.

Пробовал менять заголовки на api.

return response()->json($response, 200, [
    'Cache-Control' => 'no-cache, no-store, must-revalidate'
]);

И для аксиомов:

axios.get(payload.url, {
    headers: {
        'Content-Type': 'application/json',
        'Cache-Control' : 'no-cache, no-store, must-revalidate'
    }
}).then( response => {

Но все равно не работает.

Мой красноречивый призыв:

$dashboards = Dashboard::where(
        'user_id', '=', $userId
    )->with([
    'layouts',
    'components' => function($query) {
        $query->with('config')->with('type');
    }
])->get();

Заголовки для первого звонка выглядят так:

Cache-Control: must-revalidate, no-cache, no-store, private
Connection: Keep-Alive
Content-Length: 2564
Content-Type: application/json
Date: Sat, 26 May 2018 12:06:34 GMT
Keep-Alive: timeout=5, max=96
Server: Apache/2.4.29 (Win32) OpenSSL/1.1.0g PHP/7.2.1
X-Powered-By: PHP/7.2.1
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 90

На второй звонок я получаю

Cache-Control: must-revalidate, no-cache, no-store, private
Connection: Keep-Alive
Content-Length: 2564
Content-Type: application/json
Date: Sat, 26 May 2018 12:07:29 GMT
Keep-Alive: timeout=5, max=100
Server: Apache/2.4.29 (Win32) OpenSSL/1.1.0g PHP/7.2.1
X-Powered-By: PHP/7.2.1
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 94

Почему эта синхронизация работает для второго запроса, а не для первого?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
745
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вроде все нормально, наверное, дело было в Vue и вызове асинхронного действия. Мне удалось исправить это с помощью Promise. Однако проблема с кешем также появляется после использования истории браузера (при возврате в браузер, например, в Chrome). Странно то, что в старой версии Laravel появляются заголовки. Вышеупомянутые заголовки вместе с max-age = 0 должны принудительно обновить кеш.

Другие вопросы по теме