0

对于我的项目,我有一个这样的缓存设置:nginx_cache(60*60)(MyView.as_view())function sets a key in memcachedofnginx./URI

Nginx 在决定从缓存返回页面或将请求发送到我的应用程序之前,会在 memcached 中查找该键。我遇到的问题是创建具有代数的缓存键,以便我可以使键组无效。

例如,对我来说理想的缓存键是group_nameX:generationY:URL......

Nginx 必须在不与 python 应用程序通信的情况下找出生成密钥。

这给我留下了一个人为的想法:通过 django 设置三个缓存值;

  • 组名,无需与应用程序对话即可被 nginx 找到
  • 该特定组名的世代号
  • 完整的缓存键/输出(html 页面)

在 nginx 方面,我想我需要使用LuaModuleand Memc。我从来没有使用过非香草 nginx,所以对我来说最好避免使用它,但我不知道我是否有选择。

http://wiki.nginx.org/HttpLuaModule#ngx.location.capture
http://wiki.nginx.org/NginxHttpMemcModule

我需要设置两个使用 Memc 获取密钥的内部位置指令。

我的主要位置指令会...

  • $genkey set_by_lua(捕获内部位置 get_key_name)
  • $gen_number set_by_lua(捕获内部位置 get_key_number_from_name)
  • $memcached_key "$genkey-$gen_number-$request_uri"

有没有办法简化这个缓存设置?有我不知道的普遍接受的方法吗?(可能 - 我正在编造这个!)

4

1 回答 1

0

我可能会误解你想要什么,但你不能:

  1. 在应用程序输出中添加一个 X-Generation(或任何你想称之为的)http 标头
  2. 然后只需使用该值设置 memcached_key

在 nginx 方面,会产生类似的东西:

location /app/ {
  #add you're normal directives for app calling
  set $memcached_key group_nameX:$sent_http_X_Generation:$request_uri;
}

有关访问 http 响应标头值的变量的更多信息,请参阅http://wiki.nginx.org/HttpCoreModule#.24sent_http_HEADER

于 2012-09-13T21:21:52.677 回答