Caching 如何禁用/关闭/刷新couchdb缓存
我有一个列表,在文档上有一些基本的身份验证。我遇到的问题是列表正在缓存,因此除非我更新修订id,否则用户将看不到他们有访问权限。如何显示未缓存的列表Caching 如何禁用/关闭/刷新couchdb缓存,caching,couchdb,Caching,Couchdb,我有一个列表,在文档上有一些基本的身份验证。我遇到的问题是列表正在缓存,因此除非我更新修订id,否则用户将看不到他们有访问权限。如何显示未缓存的列表 if (req.userCtx.name === doc.permissions.owner) { return 'you have permission'; } else { return 'you do not'; } 我可以想象这样做的方式是不传递缓存或更新ETAG或头中的类似内容,但似乎什么都不起作用。我有一个尝试,
if (req.userCtx.name === doc.permissions.owner) {
return 'you have permission';
}
else {
return 'you do not';
}
我可以想象这样做的方式是不传递缓存或更新ETAG或头中的类似内容,但似乎什么都不起作用。我有一个尝试,每次在头部发送一个新的日期,使其不缓存,但这不起作用
var date = new Date().getTime() + 'x';
start({code: 200, headers: {'Content-Type': 'text/html', 'date': date}});
非常感谢您的任何想法
顺便说一句,我正在寻找一种纯粹的沙发解决方案。因此,经过更多的挖掘,我发现: 切割到重要零件:
- ETag由列表处理并显示
- 版本高达1.2您的用户必须具有角色,然后他们将获得不同的ETag
- 1.3将为每个用户名引入新的ETag
希望这对某人有所帮助。幸运的是,CouchDB资源可用!我在coach\u mrview\u 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}).
在这里,我们可以看到,除非以下情况之一发生更改,否则节目将被缓存:
- 设计文档,包含显示功能
- 用于呈现节目的文档
- “接受”HTTP请求头
- 用户名(表示每个用户至少呈现一次show)
- 用户上下文中的用户角色集