Nginx 对 REST API 的缓存

3
我们有一个移动应用程序,调用REST API获取在移动主屏幕上显示的瓷砖列表。认证机制是使用AUTH Token唯一识别用户。菜单根据应用程序版本不断更改。我们有两种方法。
1. /api/tilemenus(仅传递auth header而不是版本) 检索auth header并查找数据库表中的应用程序版本(我们还将用户版本存储在我们的数据库中,并在用户升级应用程序时更新它),然后相应地返回数据。
2. /api/tilemenus/1.2.2(除了传递身份验证头之外还传递版本,因为客户端自己知道其版本) 这里不需要进行DB查询,因为版本已经在REST请求本身中传递。
哪种方法更好?我认为第二种方法更好,因为我们可以传递缓存头来为每个版本缓存此API。对于第一种方法,在用户升级应用程序时没有隐式丢弃此缓存的方式。

瓷砖是否也会根据用户而有所不同,还是仅由版本决定瓷砖? - falcon
不,它们在用户上并没有区别。版本决定了标题。 - Madhur Ahuja
1
如果是这种情况,我建议采用第二种方法。另外,对于这个问题,我会采取不同的方法。我不会从API获取瓷砖,而是将其捆绑到应用程序中。 - falcon
我们希望能够不时地更新每个版本的磁贴。 - Madhur Ahuja
我更喜欢第二种方法。 - falcon
2个回答

2

通常在URI路径中传递API版本是很常见的(也可以参考这个问题)。我建议使用第二种选项,但将其改写为/api/1.2.2/tilemenus,这看起来更像一些流行网站上的API操作。


1
在我看来,#2更好,因为你可以强制保证特定的URL始终返回相同的资源/数据,并且可以安全地缓存它。
此外,通过分析HTTP服务器日志,可以更轻松地跟踪版本使用情况。
甚至可以省去跟踪用户版本的工作,因为#2通过请求URL本身使其明确。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接