我和我的团队正在研究 Laravel API,它与 Vue.js 前端通信,前端使用 Apollo 客户端来使用 GraphQL 响应。
我们遇到了将缓存控制标头添加到响应中的问题。
Apollo 无法缓存内容,因为响应包含以下标头:
Cache-Control: no-cache, private
Run Code Online (Sandbox Code Playgroud)
在 php.ini 中,我们可以禁用 PHP 发送缓存控制标头:
; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
; http://php.net/session.cache-limiter
session.cache_limiter =
Run Code Online (Sandbox Code Playgroud)
在 nginx 配置中,我们找不到任何设置这些标头的内容。我检查了我们在站点/可用中设置的全局 nginx.conf 和配置文件。
我可以将其添加到 nginx 配置中,但它只会添加另一个标头:
add_header Cache-Control "public";
Cache-Control: no-cache, private
Cache-Control: public
Run Code Online (Sandbox Code Playgroud)
如果此标头不是来自 PHP 或 nginx,那么它可能来自哪里?我该如何删除或覆盖它?
我有一个表的用户和帖子的列USER_ID和post_views。在post_views中,我保留了显示多少次帖子的信息。
现在,在查询中,我想让用户获得其所有帖子的post_views之和。
我试图做这样的事情:
User::where(['id'=>$id])->with('posts')->get();
Run Code Online (Sandbox Code Playgroud)
在模型中,我定义了:
public function posts()
{
return $this->hasMany('App\Models\Post')->sum('post_views','AS','totalViews');
}
Run Code Online (Sandbox Code Playgroud)
但是没有成功。
怎么做?
谢谢