2

我们目前使用 NGINX 作为我们的服务器,我们使用 memcache 来缓存 db 查询以及 php 中的页面。

我们有一个版本编号系统,在任何更新或插入发生时,此版本号都会增加,因此 memcache 将始终获取新数据,因为每个键都附加了此版本号。它对我们有用,因为读写百分比拆分为 80/20 %,因此大多数时候 memcache 将返回数据而不访问数据库。

现在我们计划将此缓存策略移动到服务器级别,NGINX 和 memcache 模块将使用请求 uri 和版本号来缓存 GET 请求。

只需要一些关于我如何实现这一目标的反馈

  • 我可以获取存储在 NGINX 的 memcache 中的这个版本号吗?(这将用于将其附加到请求 uri)
  • 我如何处理已登录的用户?(我可以为登录用户设置一个cookie并检查这个cookie是否存在于nginx中,如果它只是将请求传递给后端而不是memcache)
4

1 回答 1

2

1) 不幸的是,你不能用“vanila”nginx 做到这一点。但是有几个 3rd-party nginx 模块可以帮助你实现它。请看一下

增强 memcached 协议支持 https://github.com/bpaquet/ngx_http_enhanced_memcached_module http://wiki.nginx.org/NginxHttpMemcModule

价值评估 https://github.com/vkholodkov/nginx-eval-module

我想推荐你给 github.com/agentzh/ngx_openresty 一个机会(nginx 有很多补丁和模块)关于 NGINX 脚本的精彩演示 agentzh.org/misc/slides/nginx-conf-scripting/nginx-conf-scripting。 html

2)互联网上有很多示例如何禁用日志记录用户的缓存

    if ($http_cookie ~* "auth_user") {
        # do some thing, set flag or so  
    }
于 2012-08-25T13:01:57.177 回答