我的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。