我有一个列表,对文档有一些基本的身份验证。我遇到的问题是列表正在缓存,因此除非我更新修订版ID,否则用户将看不到它们具有访问权限。如何显示非缓存列表?
if (req.userCtx.name === doc.permissions.owner) {
return 'you have permission';
}
else {
return 'you do not';
}
我怎么想象它完成的是通过传递no-cache或更新标题中的ETAG或类似的东西,但似乎没有任何效果。这是我的尝试,每次都会在头部发送一个新的日期,使其不是缓存,但这不起作用。
var date = new Date().getTime() + 'x';
start({code: 200, headers: {'Content-Type': 'text/html', 'date': date}});
任何想法都非常感谢!
顺便说一句,我正在寻找纯粹的沙发解决方案。
答案 0 :(得分:1)
所以经过多次挖掘后我发现了这个:
http://wiki.apache.org/couchdb/Formatting_with_Show_and_List#ETags
切入重要部分:
希望这有助于某人。
答案 1 :(得分:1)
幸运的是CouchDB资源可用!我能够在couch_mrview_show.erl
中找到这个算法:
show_etag(#httpd{user_ctx=UserCtx}=Req, Doc, DDoc, More) ->
Accept = couch_httpd:header_value(Req, "Accept"),
DocPart = case Doc of
nil -> nil;
Doc -> couch_httpd:doc_etag(Doc)
end,
couch_httpd:make_etag({couch_httpd:doc_etag(DDoc), DocPart, Accept,
{UserCtx#user_ctx.name, UserCtx#user_ctx.roles}, More}).
在这里,我们可以看到节目被缓存,除非以下某项内容发生了变化: