gpt4 book ai didi

php - 为什么 laravel (eloquent) 缓存 api 路由的最后一个响应?

转载 作者:行者123 更新时间:2023-11-29 10:13:28 25 4
gpt4 key购买 nike

我正在使用 Laravel/VueJS 构建响应式(Reactive)仪表板。当仪表板工作并且套接字连接建立时,我的想法是同步具有相同 userId 的所有客户端,并在重新连接后向端点发送请求,并且再次同步。需要同步,因为所有用户实际上都可以更改仪表板的某些配置,例如选择网格项目或调整它们的大小或将它们拖到另一个位置。

当重新连接到套接字后,我向数据库发出请求以再次获取数据时,我正在挑战这个问题,并且我得到了与初始化请求相同的响应。数据未更新。

但是当我再次断开连接并再次连接时。数据再次同步。我正在为第二次调用更新数据。

我认为这是因为缓存控制 header ,但它没有给我任何好处。

我尝试更改 api 上的 header 。

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

对于 axios:

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

但是还是不行。

我 Eloquent 呼吁是:

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

第一次调用的 header 如下:

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等浏览器中返回)也会出现缓存的问题。奇怪的是, header 出现在旧版本的 Laravel 中。上述 header 与 max-age = 0 一起应强制刷新缓存。

关于php - 为什么 laravel (eloquent) 缓存 api 路由的最后一个响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50542647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com