我的Java应用程序具有访问MongoDB集合的REST GET apis(用JAX-RS实现)。 我试图引入网页缓存以减少响应时间(通过减少在MongoDB端读取文档)。MongoDB文档中的ETag工具 - Java驱动程序
我在找标准的方式对资源提供ETag的(http://en.wikipedia.org/wiki/HTTP_ETag)(资源从MongoDB中收集文件得到的),使的ETag MongoDB中收集将自动更新,每次更新文档。
现在,我可以使用ETag在MongoDB文档中的HTTP请求(“If-None-Match”)中验证ETag,如果两者相同,则返回304(未修改)。现在,WebCache可以将已经缓存的资源返回给客户端,从而缩短响应时间。
在谷歌上搜索,我得到了以下两个选择:
hascode()作为ETag的:从MongoDB中获得文件和填充的Java 对象,然后,计算出的hashCode(),它被用作ETag的。但我 想避免这种开销(全DOC读+哈希码计算) https://devcenter.heroku.com/articles/jax-rs-http-caching
最后修改日期为ETag的:添加新字段“上次修改时间”对MongoDB的 集合。 http://howtodoinjava.com/2013/06/05/jax-rs-resteasy-cache-control-with-etag-example/ 此机制更适合“上次修改”标题(HTTP 响应)。看起来,日期在这里被误用于ETag。在这里我要 修改现有的文档插入新字段(updatedTime)。同样, HTML日期的精确度是sec,mongoDB日期是msec。
请建议标准方式在MongoDB中提供ETag。