Caching REST资源设计:嵌入相关数据还是链接到相关数据?

Caching REST资源设计:嵌入相关数据还是链接到相关数据?,caching,rest,resources,Caching,Rest,Resources,我有一个包含文章和作者资源的REST系统。一般来说,当访问一篇文章时,我还想知道作者的姓名。我可以用几种方法来完成这项工作:a)将作者姓名的副本直接嵌入到文章中;或者B)在文章中包含一个URI,该URI指向适当的作者资源 将作者的名字直接复制到文章资源中显然有一个缺点。通过将信息复制到多个资源中,我将自己暴露在资源之间的冲突中。作者更新其姓名后,文章资源可以使用其旧名称,而作者资源将使用新名称 也许如果我不缓存文章,这不会是一个问题?但是作为一个实际问题,快速性和减少返回服务器的次数是非常理想的

我有一个包含文章和作者资源的REST系统。一般来说,当访问一篇文章时,我还想知道作者的姓名。我可以用几种方法来完成这项工作:a)将作者姓名的副本直接嵌入到文章中;或者B)在文章中包含一个URI,该URI指向适当的作者资源

将作者的名字直接复制到文章资源中显然有一个缺点。通过将信息复制到多个资源中,我将自己暴露在资源之间的冲突中。作者更新其姓名后,文章资源可以使用其旧名称,而作者资源将使用新名称

也许如果我不缓存文章,这不会是一个问题?但是作为一个实际问题,快速性和减少返回服务器的次数是非常理想的,因此在浏览器中缓存是我一直追求的目标

在场景B中,使用URI进行链接似乎是正确的,并且对缓存更加友好。但这会使服务器回拨的次数增加一倍:每篇文章都需要第二次(连续)获取作者。因此,从另一个角度看,这是非常昂贵的,特别是当我们讨论多个URI到多个其他资源时。当一次显示50篇文章时,这可能会变得疯狂

我想听听其他人是如何解决这个问题的。有值得一读的“最佳实践”文章吗

链接。。。将对服务器的回拨次数增加一倍:每篇文章都需要第二次(连续)获取作者

REST包含缓存约束正是出于这个原因,即如果数据已经位于本地缓存中,则根本不必进行“第二次获取”(或者如果缓存是中间缓存或服务器端,则可以是仅使用部分网络资源的请求)。如果您的数据可以设计成这样一种方式来利用这一点,那么您可以将总网络流量减少几个数量级。如果不能,那么应用REST体系结构样式就没有意义了,它依赖于缓存来提高网络效率——选择一种不同的样式,比如RPC