Я создаю реактивную панель управления с 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
Почему эта синхронизация работает для второго запроса, а не для первого?






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